c++ - 最少的 openGL 初始化

标签 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);

我认为我应该能够安全地禁用其中的大部分功能,但我不确定,因为我仍在尝试弄清楚其中的大部分功能实际上会做什么。

最佳答案

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/

相关文章:

c++ - 静态方法 C++

c++ - gluTessCallback 错误 C2440

c++ - qt编程中未初始化的switchcase错误

c++ - 如何使按钮更新 QT 表?

c++ - 使用四元数进行OpenGL旋转

c++ - 函数内部的静态变量如何工作?

用于创建、可视化和算法操作数据结构的 C++ 库

c++ - 比较字符串时 QtTest 失败,即使它们相同? C++

c - 如何用不同于边界的颜色填充多边形?

c++ - wglGetCurrentDC 未解析的外部