加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用最新的OpenGL?

发布时间:2020-12-16 06:02:16 所属栏目:百科 来源:网络整理
导读:对于这个问题来说,这是非常新鲜的,而在大学时,我们每次需要它们时都会提供.dlls.但是我从来没有想过我正在使用什么实际版本,我使用了什么扩展…这真的是很难过的.我在官方khronos网站上找不到任何下载链接.点击OpenGL SDK链接,只是给我更多的文档. 我习惯了D
对于这个问题来说,这是非常新鲜的,而在大学时,我们每次需要它们时都会提供.dlls.但是我从来没有想过我正在使用什么实际版本,我使用了什么扩展…这真的是很难过的.我在官方khronos网站上找不到任何下载链接.点击OpenGL SDK链接,只是给我更多的文档.
我习惯了DirectX,这使得它很清楚你正在使用什么版本. (由您创建的设备).

>如何开始使用OpenGL 4.0?
>如何启用扩展?
>我如何知道我的机器有什么版本的OpenGL?
> 4.0有什么大的变化吗?我不认为我需要关心旧版本,因为我将OpenGL纯粹用于教育目的至少2年.

解决方法

OpenGL不是具有不同版本号的库,等等.相反,它是图形驱动程序自己必须支持的一个大标准.因此,一些显卡可能不支持最新的OpenGL版本,而将来某些卡可能不支持旧版本.

如果您使用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中分配和填充数据

您可以在上面链接的GLee页面中看到一些示例

当然,你无法做到这一切.例如,着色器无法在没有某种扩展名的情况下完成,如果不可用,您应该只显示一条错误消息.

更复杂:从OpenGL 3开始,一些功能已被弃用.您现在有两种方式来初始化OpenGL:

>新的方式(Windows上的wglCreateContextAttribsARB),您可以精确定位所需的最低OpenGL版本
>旧方式(wglCreateContext),它要求最少的OpenGL 1.1(最近版本也可以访问)

如果您要求的版本优于OpenGL 3,由于扩展ARB_compatibility可能被卡支持,所以不推荐使用的功能在理论上是可以访问的.目前,所有现有GPU都支持ARB_compatibility,但将来可能不再是这样.

如果您要求的版本低于OpenGL 3,这些功能不被视为不推荐使用,但如果卡不再支持,初始化将失败.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读