[英]Can't get Display List to Work
首先,像往常一樣,感謝所有人對SO社區的大力支持。
因此,我編寫了繪制6個gl_quads(形成一個立方體)的代碼。 最初,此代碼被立即繪制(在顯示函數中明確調用了24個頂點)。 我想將它們放在顯示列表中。 我閱讀了有關顯示列表的教程,並試了一下。 問題是,什么都沒有出現,並且我有一個glulookat可以明確指向立方體的方向(在即時模式下驗證)。 因此,基本上,當不使用顯示列表時,代碼可以完美地工作,但是當我嘗試使用列表時,代碼則無法工作。
好的,足夠了,讓我們看一下代碼:
第二次編輯-將glGenLists移動到initGl中,它可以正常工作。 謝謝大家
* 編輯- *的glGenList通話是全球制造:
GLuint skybox = glGenLists(1);
而且我仍然得到相同的結果。 屏幕上沒有任何內容。
設置列表(在initgl函數中):
glViewport(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL);
glMatrixMode(GL_PROJECTION); //setup the projection matrix
glLoadIdentity();
gluPerspective(45, WINDOW_WIDTH/WINDOW_HEIGHT,.1,200.0);
glMatrixMode(GL_MODELVIEW); //switch to modelview
glLoadIdentity();
gluLookAt(-2,2,2,0,0,0,0,1,0);
glClearColor(0, 0, 0, 0);
glNewList(skybox, GL_COMPILE_AND_EXECUTE); //draw the list once to compile/store
drawEnv(); //draw 6 quads
glEndList(); //end list
顯示功能(忽略無關代碼):
/* Clear buffers */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//-----Draw Skybox------
glEnable(GL_TEXTURE_2D);
glPushMatrix(); //save env settings (I've tried removing this push/pop pair with same results
glCallList(skybox);
glPopMatrix();
glDisable(GL_TEXTURE_2D);
而drawEnv()函數:
//---------------------------
//--------RIGHT WALL---------
//---------------------------
//This code draws correctly if I move this to the display function (immediate drawing)
glBindTexture(GL_TEXTURE_2D,rightTextureId);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex3f( 1.0f, 1.0f, 1.0f); //V2
glTexCoord2f(0.0, 1.0); glVertex3f( 1.0f,-1.0f, 1.0f); //V1
glTexCoord2f(1.0, 1.0); glVertex3f( 1.0f,-1.0f,-1.0f); //V3
glTexCoord2f(1.0, 0.0); glVertex3f( 1.0f, 1.0f,-1.0f); //V4
glEnd();
//repeat 5 more times
您glGenLists()
,只需要首先調用glGenLists()
即可生成一組連續的空顯示列表 。
GLuint listID;
listID = glGenLists( 1 ); // generate 1 display list
glNewList( listID, GL_COMPILE );
// whatever you want in the display list
glEndList();
// call the display list
glCallList( listID );
您還應該進行一些錯誤檢查,以確保glGenLists()
返回了有效的顯示列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.