小编use*_*466的帖子

使用openGL截取屏幕截图并将其另存为png

我正在尝试全屏截图并将其保存为png.我在这里找到了一个代码并对其进行了一些修改.对于屏幕截图,我使用openGL和Glut以及在png中保存c的gd库.我得到的只是一个黑色的png,我无法弄清楚为什么.我在stackoverflow中搜索并发现了一些帖子,但不幸的是他们没有帮助.其中一个是使用glReadBuffer(GL_FRONT); 而不是glReadBuffer(GL_BACK); 我尝试了两个都没有成功.这是我的代码:

int SVimage2file(char *filename){
    int width = glutGet(GLUT_SCREEN_WIDTH);
    int height = glutGet( GLUT_SCREEN_HEIGHT);
    FILE *png;
    GLubyte *OpenGLimage, *p;
    gdImagePtr image;
    unsigned int r, g, b;
    int i,j,rgb;

    png = fopen(filename, "wb");

    if (png == NULL) {
        printf("*** warning:  unable to write to %s\n",filename);
        return 1;
    }

    OpenGLimage = (GLubyte *) malloc(width * height * sizeof(GLubyte) * 3);
    if(OpenGLimage == NULL){
        printf("error allocating image:%s\n",filename);
        exit(1);
    }

    printf("Saving to: %s .\n",filename);
    glPixelStorei(GL_PACK_ALIGNMENT, 1);
    glReadBuffer( GL_FRONT);
    glReadPixels(0, 0, width, …
Run Code Online (Sandbox Code Playgroud)

c opengl gdlib

5
推荐指数
1
解决办法
6291
查看次数

标签 统计

c ×1

gdlib ×1

opengl ×1