我在OpenGL編程方面很新穎。我的目標是設置面向對象的圖形編程,我可以自豪地說我已經取得了一些進展。現在我有不同的問題。C++,OpenGL - 渲染大量的茶壺
可以說我們有工作程序什麼可以使一個,兩個或許多旋轉茶壺。我通過在我的課堂內使用列表來做到這一點。繪圖功能的原始代碼是在這裏:
void Draw(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
for(list<teapot>::iterator it=teapots.begin();it!=teapots.end();it++){
glTranslatef(it->pos.x,it->pos.y,it->pos.z);
glRotatef(angle,it->ang.x,it->ang.y,it->ang.z);
glutSolidTeapot(it->size);
glRotatef(angle,-it->ang.x,-it->ang.y,-it->ang.z);
glTranslatef(-it->pos.x,-it->pos.y,-it->pos.z);
}
glPopMatrix();
glutSwapBuffers();
}
一切都很好,但是當我畫大量的茶壺 - 兩行說,128 - 我的FPS數下降。我不知道,如果這只是硬件限制,或者我做錯了什麼?也許glPushMatrix()和glPopMatrix()應該更頻繁地發生?或更少?
GLUT使用即時模式渲染,這對於性能來說很糟糕。改用VBOs,或者至少首先將茶壺呈現在顯示列表中。 – 2014-09-27 13:59:43