我正在开发一个完全支持GL <2的上网本。它能以超过100fps的速度工作。但由于我读到状态机已被弃用,我正在尝试移动,但这似乎是不可能的。很多函数都不是使用最新的glext.h声明的。所以我不能创建一个着色器程序或者至少一个VBO。所以我尝试使用glm来移动矩阵。但是从glm发送矩阵到ogl是通过调用glUniformMatrix*v完成的,这里也没有声明。那么有没有办法在不使用GLSL的情况下“升级”呢?我不需要任何提示,我只包含了GLSL,因为它很好,速度很快,等等,因为我不能使用它,我不能相信没有它是不可能的。
我用OpenGL扩展查看器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%
发布于 2012-12-11 20:40:07
…仅完全支持GL <= 2.2。(…)但由于我读到状态机已被弃用,我正在尝试移动,但这似乎是不可能的。
首先:状态机没有被弃用。固定函数管道已弃用。但此更改仅适用于OpenGL-3核心及更高版本。因此,如果您仅限于OpenGL-2,那么修复函数和所有的jazz仍然可用。
那么,有没有办法不使用
就“升级”呢?
您确实意识到,弃用固定的函数管道意味着大致相同:现在着色器发生了所有事情。用GLSL编写的着色器。
GLSL在OpenGL-2中也可用。这不是强制性的。
很多函数都不是使用最新的glext.h声明的。所以我不能创建一个着色器程序或者至少一个VBO。
你需要的不仅仅是glext.h。您还需要一些代码来加载OpenGL实现中的高级函数。一个流行的选择是GLEW,可以在http://glew.sourceforge.net上找到
我不能用它
嗯,不是开箱即用的。但是使用GLEW是小菜一碟:
GLEW
#include <GL/glew.h>
glewInit();在每次创建OpenGL上下文后立即添加对OpenGL的调用。发布于 2012-12-11 20:29:40
尝试使用glew。它不会直接解决你的问题,但有很多(可能相关的)在Windows上使用OpenGL扩展的问题。
发布于 2012-12-11 20:51:36
查看您的平台是否支持OpenGL ES 2.0。这实际上已经成为现代台式机的标准。如果是这样,请使用OpenGL ES 2.0。
此外,您还可以在OpenGL扩展中找到许多所需的功能。查看您的平台上有哪些可用扩展,并注意函数名称可能与较新的标准名称不同(例如glBindFramebuffer_EXT)
https://stackoverflow.com/questions/13820202
复制相似问题