我正在开发一款完全支持GL<的上网本。仅限2。这一切都在超过100fps。但是,既然我读过状态机已被弃用,我正试图移动,但这似乎是不可能的。很多函数都没有使用最新的glext.h声明。所以我无法创建着色器程序或至少是VBO。所以我尝试使用glm移动矩阵。但是通过调用glUniformMatrix * v发送一个从glm到ogl的矩阵,这里也没有声明。那么有没有办法在不使用GLSL的情况下“升级”? 我不需要任何提示,我只是包括GLSL,因为它很好而且快速等等,因为我不能使用它,如果没有它,我无法相信它是不可能的。
我使用OpenGL Extension Viewer 3检查了扩展名。报告说:
1.1 100%
1.2 100%
1.3 100%
1.4 100%
1.5 66%(不支持:GL_ARB_occlusion_query)
2.0 10%(仅支持:GL_EXT_stencil_two_side)
2.X 0%
3.X 0%
4.X 0%
答案 0 :(得分:6)
...仅完全支持GL< = 2.2。 (...)但是既然我读过状态机已被弃用,我正试图移动,但这似乎是不可能的。
首先关闭:不推荐使用状态机。已弃用固定功能管道。但是这种变化仅适用于OpenGL-3核心和更进一步。因此,如果您仅限于OpenGL-2,那么固定功能和所有爵士乐仍然可用。
那么有没有办法在不使用GLSL的情况下“升级”?
你确实意识到弃用固定功能管道意味着大致相同:现在所有的事情都发生在着色器上。用GLSL编写的着色器。
GLSL也可以在OpenGL-2中使用。这不是强制性的。
许多函数未使用最新的glext.h声明。所以我无法创建着色器程序或至少是VBO。
这不仅仅是你需要的glext.h。您还需要一些从OpenGL实现加载高级函数的代码。一个受欢迎的选择是GLEW,可在http://glew.sourceforge.net
获得我不能用它
嗯,不是开箱即用的。但是使用GLEW是一个很好的例子:
#include <GL/gl.h>
的出现替换为#include <GL/glew.h>
glewInit();
的调用。答案 1 :(得分:1)
尝试使用glew。它不会直接解决您的问题,而是在Windows上使用OpenGL扩展的许多(可能相关的)问题。
答案 2 :(得分:0)
查看您的平台是否支持OpenGL ES 2.0。这实际上已成为现代桌面的标准。如果是这样,请使用OpenGL ES 2.0。
此外,您可以在OpenGL扩展中找到许多所需的功能。查看平台上可用的扩展名,并注意函数名称可能与以后的标准名称不同(例如glBindFramebuffer_EXT)