2011-11-12 16 views
0

我試圖按照紅色書籍 (這是不完整的)的第8章的glDrawPixels例子,但看不到任何東西(我只是看到一個黑色的屏幕 沒有pixmapwhen我運行代碼。任何想法我做錯了嗎?glDrawPixels:看不到程序輸出

#include <GL/glut.h> 

#define CHECK_IMAGE_WIDTH 64 
#define CHECK_IMAGE_HEIGHT 64 
static GLubyte checkImage[CHECK_IMAGE_WIDTH][CHECK_IMAGE_HEIGHT][3]; 

void makeCheckImage(void) { 

    int i, j, c; 

    for (i = 0; i < CHECK_IMAGE_HEIGHT; i++) 

    for (j = 0; j < CHECK_IMAGE_WIDTH; j++) { 

     checkImage[i][j][0] = (GLubyte) 255; 
     checkImage[i][j][1] = (GLubyte) i == j ? 255 : 0; 
     checkImage[i][j][2] = (GLubyte) 255; 

    } 

} 

void init() { 
    glClearColor(0.0, 0.0, 0.0, 0.0); 
    glShadeModel(GL_FLAT); 
    makeCheckImage(); 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
} 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glRasterPos2i(0, 0); 
    glDrawPixels(CHECK_IMAGE_WIDTH, CHECK_IMAGE_HEIGHT, GL_RGB, GL_UNSIGNED_BYTE, checkImage); 
    glFlush(); 
} 

void reshape(int w, int h) { 
    gluOrtho2D(-10.0f, 10.0f, -10.0f, 10.0f); 
    glViewport(0, 0, w, h); 
} 

int main(int argc, char **argv) { 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB); 
    glutCreateWindow(argv[0]); 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
    return 0; 
} 

回答

4

您的代碼錯過了初始化呼叫,它初始化與內容的棋盤圖像。添加init();權利之前glutMainLoop();

+0

謝謝,這解決了這一問題。應該注意到這一點的 –

+3

@JohnGoche如果那回答你的qu你可能想[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – Bart