我正在尝试学习 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);
我认为我应该能够安全地禁用其中的大部分功能,但我不确定,因为我仍在尝试弄清楚其中的大部分功能实际上会做什么。
最佳答案
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);
所有这些都是已弃用的固定功能管道的一部分,可以删除并使用着色器进行模拟。
关于c++ - 最少的 openGL 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29034811/