从固定管道转向现代 OpenGL
我已经完成了一些简单的 OpenGL(旧的固定管道,没有着色器等),并且想要开始一些严肃的“现代”OpenGL 编程。 (应该在 Windows 和 Linux 上编译)
我有几个问题。
1) 在 Windows 中,“gl.h”没有声明 OpenGL2.0+ 相关的 API 调用。(例如 glShaderSource() )。我如何访问这些 API 调用? 我不想安装显卡特定的标头,因为我想在其他机器上编译此应用程序。
2) 在 Linux 中,如果我安装 Mesa 库,我可以访问以上 OpenGL2+ API 函数吗?
I have done some simple OpenGL (old fixed pipeline ,without shaders ..etc) and want to start some serious "modern" OpenGL programming. (Should compile on Windows and Linux)
I have few questions.
1) In Windows , the "gl.h" doesnt have OpenGL2.0+ related API calls declared .(eg. glShaderSource() ) . How can I access these API calls?
I dont want to install graphics-card specific headers since, I want to compile this application in other machines.
2) In Linux ,If I install Mesa library can I access above OpenGL2+ APIs functions ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一些人长期以来一直相信(由于 90 年代末/00 年代初 GL 版本更新缓慢),获取核心 OpenGL 调用的方法就是只包含标头和库。手动加载函数指针是您为扩展、“显卡特定”功能所做的事情。事实并非如此。
您应该始终使用扩展加载库来访问 OpenGL 函数,无论是核心还是扩展。 GLEW 是一个相当不错的,如果你能忍受它的局限性(仅限 3.0 核心或更好),GL3W 也不错。
There has been a long-held belief among some (due to the slowness of GL version updates in the late 90s/early 00s) that the way to get core OpenGL calls was to just include a header and a library. That loading function pointers manually was something you did for extensions, for "graphics-card specific" function. That isn't the case.
You should always use an extension loading library to get access to OpenGL functions, whether core or extension. GLEW is a pretty good one, and GL3W is decent if you can live with its limitations (3.0 core or better only).