为什么我可以在opengl 3环​​境中使用opengl 4函数

时间:2015-04-17 04:07:57

标签: opengl

我正在使用freeglut在ubuntu上运行应用。我使用glutInitContextVersion(3, 3),当我调用glGetString(GL_VERSION)时,函数返回3.3 (Core Profile) Mesa 10.3.2。但我可以使用glTexStorage2D函数,该函数运行良好。 Opengl Reference页面告诉该函数与opengl 4.2或更高版本兼容。为什么我可以使用这个功能?我使用Intel Ivy Bridge i3 cpu和Intel GPU

2 个答案:

答案 0 :(得分:4)

如果上下文初始化成功,则仅表示您最终使用的版本与您请求的版本兼容。它不会阻止在幕后使用更高版本。至于版本字符串,由于您要求使用较旧的上下文版本,因此可能只是因为兼容性原因而对您撒谎。

答案 1 :(得分:1)

您可以使用该功能,因为您的实现实现了ARB_texture_storage。请参阅,ARB_texture_storage的功能不会以ARB结尾。它定义了与OpenGL 4.2完全相同的功能,具有完全相同的行为。

这允许3.3实现从更高版本实现选择功能,但不使用不同的功能。让glTexStorageARB成为与glTexStorage不同的功能是没有意义的,因为他们做同样的事情。

这些类型的扩展称为"向后兼容性扩展"或" core extensions"。