我习惯了DirectX,这使得它很清楚你正在使用什么版本. (由您创建的设备).
>如何开始使用OpenGL 4.0?
>如何启用扩展?
>我如何知道我的机器有什么版本的OpenGL?
> 4.0有什么大的变化吗?我不认为我需要关心旧版本,因为我将OpenGL纯粹用于教育目的至少2年.
解决方法
如果您使用OpenGL 1.0或使用OpenGL 4.0,则不需要包含不同的标题或链接到不同的库.不过要使用OpenGL 4.0,您必须检测是否由程序运行的机器支持.目前,只有最近的GPU支持OpenGL 4.0.您可能有更好的机会与OpenGL 3.0
如果您在Windows上,请包含“gl / gl.h”并将程序与“OpenGL32.lib”链接
程序启动后,您可以检测到GPU支持的OpenGL版本,或使用glString和wglGetProcAddress启用扩展.但是,我强烈建议您使用第三方库(GLee是我最喜欢的).
使用OpenGL进行编程与使用DirectX编程非常不同. DirectX保证支持您使用的版本的所有功能.当您使用OpenGL编写代码时,您应该单独检测每个功能.
例如,假设您要使用顶点缓冲区.你的代码应该是这样的:
>如果OpenGL版本> = 2,则使用glGenBuffers,glBindBuffer等
>否则,在RAM中分配和填充数据
当然,你无法做到这一切.例如,着色器无法在没有某种扩展名的情况下完成,如果不可用,您应该只显示一条错误消息.
更复杂:从OpenGL 3开始,一些功能已被弃用.您现在有两种方式来初始化OpenGL:
>新的方式(Windows上的wglCreateContextAttribsARB),您可以精确定位所需的最低OpenGL版本
>旧方式(wglCreateContext),它要求最少的OpenGL 1.1(最近版本也可以访问)
如果您要求的版本优于OpenGL 3,由于扩展ARB_compatibility可能被卡支持,所以不推荐使用的功能在理论上是可以访问的.目前,所有现有GPU都支持ARB_compatibility,但将来可能不再是这样.