我正在使用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
答案 0 :(得分:4)
如果上下文初始化成功,则仅表示您最终使用的版本与您请求的版本兼容。它不会阻止在幕后使用更高版本。至于版本字符串,由于您要求使用较旧的上下文版本,因此可能只是因为兼容性原因而对您撒谎。
答案 1 :(得分:1)
您可以使用该功能,因为您的实现实现了ARB_texture_storage。请参阅,ARB_texture_storage的功能不会以ARB
结尾。它定义了与OpenGL 4.2完全相同的功能,具有完全相同的行为。
这允许3.3实现从更高版本实现选择功能,但不使用不同的功能。让glTexStorageARB
成为与glTexStorage
不同的功能是没有意义的,因为他们做同样的事情。
这些类型的扩展称为"向后兼容性扩展"或" core extensions"。