2015-03-13 100 views
0

我想學習OpenGL,目前正試圖與Qt一起使用它。我想要做的是將視頻文件中的幀加載到紋理中,然後將其顯示在屏幕上。我以後可能會嘗試做的唯一事情就是在此上啓用縮放功能。牢記這一點,我需要使用哪些最低OpenGL初始化來最大化性能。更具體地說,我是否需要釋放某些功能,以便我可以最大限度地提高性能,滿足當前非常有限的需求。最小的openGL初始化

例如,在OpenGL的Qt的教程初始化爲:

glEnable(GL_DEPTH_TEST); 
glEnable(GL_CULL_FACE); 
glShadeModel(GL_SMOOTH); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
glEnable(GL_MULTISAMPLE); 
static GLfloat lightPosition[4] = { 0.5, 5.0, 7.0, 1.0 }; 
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); 

我想我應該放心地能夠禁用大多數這些,但我不知道,因爲我仍然在試圖找出最這些東西實際上會做。

回答

3
glEnable(GL_DEPTH_TEST); 

啓用深度測試,可以防止三角形在他人應該隱藏的情況下覆蓋他人。保持啓用以避免文物。

glEnable(GL_CULL_FACE); 

防止三角形背離你時被繪製。保持啓用以獲得更好的性能

glShadeModel(GL_SMOOTH); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
static GLfloat lightPosition[4] = { 0.5, 5.0, 7.0, 1.0 }; 
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); 

所有這些都是不建議使用的固定功能管線的一部分,可以使用着色器進行移除和仿真。

3

如果你剛開始學習,這裏的附加信息:

glEnable(GL_DEPTH_TEST) 

離開它只有在你打算繪製3D形狀

glEnable(GL_CULL_FACE) 

刪除它,直到你習慣順時針的概念,以及逆時針重要的繪製要點。否則你可能無法看到你的第一個渲染的形狀,因爲它們可能被剔除。先不要這樣做,然後啓用它,然後用順時針和逆時針繪圖進行試驗。

glShadeModel(GL_SMOOTH) 

離開那個。它只是指示渲染器混合不同的顏色並沿着形狀平滑它們。如果你將不同的顏色放在不同的點上,他們會順利插入。

glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
glEnable(GL_MULTISAMPLE); 
static GLfloat lightPosition[4] = { 0.5, 5.0, 7.0, 1.0 }; 
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); 

如果您已經過了渲染簡單形狀的要點,請使用它們來嘗試照明。您還應該爲幾何圖形提供法線,以查看效果。如果你真的在開始,請將這些註釋掉,直到你更熟悉繪圖形狀。

祝你好運!