use*_*501 24 opengl glew opengl-3 opengl-4
好的,所以我已经知道为什么我需要GLEW,但只有一点.
如果我使用现代OpenGL的东西,可能是从版本3.0开始,和/或使用核心配置文件,那么GLEW是必需的,因为没有它编译产生的错误,如未glGenVertexArrays声明.
所以GLEW做了一些背景工作,包括我们想要使用的现代OpenGL函数.
除此之外,还有什么其他的吗?另外,它是如何工作的.
举个例子,它是否改进了跨平台编译?(例如,如果从Linux迁移到Windows或OS X,需要对代码进行少量修改?
它是否也改善了图形硬件的"跨平台性"?例如,假设我们有两台相同的计算机,包括操作系统.在一个系统上使用OpenGL 4.3命令编译程序.如果其他系统有只支持OpenGL 3.3的显卡或驱动程序,那么GLEW会帮忙吗?(也许是为旧版OpenGL编译着色器?)
所以你可能会发现我实际上并不知道GLEW做了什么或它是如何做到的.
最后一点; 有谁知道如何使用GLEW与GLFW?我可能会将其作为一个单独的问题发布.
kel*_*tar 13
正如你所说,GLEW并非"必需".您可以使用glcorearb.h标头,或类似的东西.但是,如果您链接某些功能 - 它必须存在于目标平台上,否则您的程序将无法启动.GLEW和其他人正是要处理的 - 你不是直接链接GL函数,而是在初始化阶段之后获取函数指针.它允许您在运行时检查存在哪些扩展以及可以使用哪些功能.
它对可移植性唯一有帮助的是获取函数指针 - 它可能是wglGetProcAddress/glxGetProcAddress,它类似于苹果操作系统.所以不,这不是一个案例.但是,各种可用的GL扩展是.
GLEW不需要您首选的GL初始化库的触摸点 - 只需在创建GL上下文后调用glewInit.
要正确初始化,必须创建OpenGL上下文,并且 wglMakeCurrent()必须在调用之前调用它glewInit();
我会把这个放到keltar答案的评论中,但我不知道怎么做.
| 归档时间: |
|
| 查看次数: |
10974 次 |
| 最近记录: |