微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 如何使用最新的OpenGL?

对于这个问题来说,这是非常新鲜的,而在大学时,我们每次需要它们时都会提供.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,这些功能不被视为不推荐使用,但如果卡不再支持,初始化将失败.

原文地址:https://www.jb51.cc/c/112930.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐