最小的openGL初始化

时间:2015-03-13 14:28:20

标签: c++ qt opengl

我正在尝试学习OpenGL,目前正尝试将其用于Qt。我想要做的是将视频文件中的帧加载到纹理中,然后将其显示在屏幕上。我以后可能尝试做的唯一事情是在此上启用缩放功能。记住这一点,我需要使用哪些最小的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);

我认为我应该能够安全地禁用其中的大部分,但我不确定,因为我仍在试图找出大部分这些事情实际上会做什么。

2 个答案:

答案 0 :(得分: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);

所有这些都是已弃用的固定功能管道的一部分,可以使用着色器删除和模拟。

答案 1 :(得分: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);

如果您已经超越渲染简单形状的点,请使用这些来尝试照明。您还应该为几何体提供法线,以便查看效果。如果您真的在开始时,请对其进行评论,直到您更熟悉绘制形状。

祝你好运!