我正在尝试使我编写的库可移植。它是一个图形库,大量使用高级OpenGL。我在一台支持OpenGL 4.2的机器上开发了这个库。
有许多OpenGL 4函数(一个简单的例子是glGenerateMipmap)不是OpenGL 2中的核心功能,但在扩展(在本例中是glGenerateMipmapEXT)下可用。在较老的硬件上运行时,我发现OpenGL 4函数指针为空,但以EXT为后缀的OpenGL 2扩展函数不为空,并且工作正常。
我在用GLEW。虽然我意识到偶尔OpenGL 4函数与OpenGL 2 EXT函数不完全相同,但它们大多数情况下是相同的。有没有办法让GLEW加载EXT函数作为OpenGL 4函数?或者我是不是把所有的OpenGL 4函数都重命名为EXT函数了?还有别的吗?
发布于 2012-07-03 10:00:30
不,你不能让GLEW欺骗你,假装一个扩展函数是一个核心函数。
通常,在编写OpenGL代码时,您可以选择一个特定的版本+一组扩展并对其进行编写。如果您想要可选的功能(某些特定于硬件的功能),则需要编写调用这些API的附加代码路径。
除了MacOSX的核心3.2支持之外,你可以期待旧的扩展在新硬件上得到无限期的支持。这样,旧的程序仍然可以在新的实现上运行。所以你不可能找到一个不实现GL_EXT_framebuffer_object的GL4.x实现。
https://stackoverflow.com/questions/11303172
复制相似问题