我应该在OpenGL< 2.0中使用EXT方法/常量吗?

时间:2011-08-25 10:57:26

标签: opengl version

我正在为PC编写3D游戏,考虑到最低系统要求(比Pentium II 400MHz和GeForce3都好)。我在文档中读到这个或那个函数以EXT开头,最后被包含在1.3或1.4版的OpenGL核心中。

在dglOpenGL头文件中,glBindFramebuffer和glBindFramebufferEXT方法都有GL_FRAMEBUFFER和GL_FRAMEBUFFER_EXT常量。我的问题是 - 我应该使用哪个版本的EXT或noEXT?

某些英特尔内置GPU的驱动程序是否只满足1.3版本是否有可能接受glMethodExt并且会在相同的glMethod(最终没有EXT)时崩溃?

1 个答案:

答案 0 :(得分:1)

您应该使用该实现中可用的内容。核心功能将由版本号表示。如果您期望获得核心FBO支持,则需要获得3.0或更高版本。

扩展支持由扩展字符串表示。您应该在启动时检查可用的扩展名,并且不应使用任何不存在的扩展名。

现在,有一些ARB扩展是“核心扩展”。这意味着#defines和函数没有ARB后缀。所以ARB_framebuffer对象是一个扩展,但它定义了glBindFramebuffer,没有后缀。这意味着您可以检查版本3.0 扩展名,在任何一种情况下,您都使用相同的函数和#defines。

核心扩展几乎总是意味着与核心扩展完全相同的东西。非核心扩展可以进行更改。例如,ARB_geometry_shader4不是核心扩展,并且3.2的核心几何着色器功能在规范和API方面非常不同。

您通常应该拥有一些您接受的最低OpenGL版本,然后根据更高版本和/或扩展程序的存在运行不同的代码路径。