Сделайте скриншот с openGL и сохраните его в формате png

Я пытаюсь сделать снимок экрана во весь экран и сохранить его в формате PNG. Я нашел кодВот и немного его модифицировал. Для скриншота я использую openGL и Glut, а для сохранения в png библиотеку gd для c. Все яЯ получаю черный 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, height, GL_RGB, GL_UNSIGNED_BYTE, OpenGLimage);
    p = OpenGLimage;
    image = gdImageCreateTrueColor(width,height);

    for (i = height-1 ; i>=0; i--) {
        for(j=0;j

Ответы на вопрос(2)

Ваш ответ на вопрос