2015-03-13 97 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); 

如果您已经过了渲染简单形状的要点,请使用它们来尝试照明。您还应该为几何图形提供法线,以查看效果。如果你真的在开始,请将这些注释掉,直到你更熟悉绘图形状。

祝你好运!