如何在 OpenGL 3.0 中编程? (没有更高)
Posted
技术标签:
【中文标题】如何在 OpenGL 3.0 中编程? (没有更高)【英文标题】:How to program in OpenGL 3.0? (no higher) 【发布时间】:2014-04-11 17:31:14 【问题描述】:我想学习 OpenGL 3.0。我在 OpenGL 1.1 (lwjgl) 中编写了一个小程序,但是 *** 上的答案建议学习现代 OpenGL,包括顶点缓冲区对象、顶点和片段着色器等内容。
我已经开始使用ogldev tutorial。但是,我的显卡是 Intel HD 显卡,最高只支持 OpenGL 3.0(在 Linux 上使用 Mesa 10.1),当我编译第二个教程的代码时,我可以看到一个点,但是当我编译第三个教程的代码时代码我看不到三角形(尽管唯一的区别是顶点的数量);
我如何知道哪些函数在 OpenGL 3.0 中不存在,但在其他版本的 OpenGL 3.x 中存在,我应该用什么替换它们?
【问题讨论】:
您使用什么语言(您最初提到了 lwjgl)?大多数 Java 语言绑定实际上被拆分为命名空间,因此您必须执行以下操作:import ...opengl.GL30
才能访问 OpenGL 3.0 中引入的函数。使用得当,这会保留一组可用的函数"pure",如果你不导入它们,你将无法调用来自 GL 3.1+ 的函数.一个好的 IDE 甚至可以看到您的确切导入集,并且仅在自动完成列表等中列出您的版本中的函数。
我正在使用 C 和 GLEW。每当我使用 glDrawArrays(GL_POINTS, int, int) 时,我都会重试它,无论我作为顶点数据传递什么,我都会在中心得到相同的点。
【参考方案1】:
了解给定 OpenGL 版本中功能是否可用的唯一方法是查看文档。 OpenGL Wiki 是一个好的开始。
在 OpenGL 中处理这个问题相当笨拙,因为它严重依赖扩展和硬件特定的东西,您必须在使用前在运行时测试可用性。有很多很好的库可以帮助您解决这个问题,例如 GLEW 和 Regal。
【讨论】:
我已经在使用 GLEW,而且我使用的所有功能似乎都存在于 3.0 中以上是关于如何在 OpenGL 3.0 中编程? (没有更高)的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅OpenGL ES 3.0实现了具有可编程着色功能的图形管线
Modern OpenGL 3.x 及更高版本如何绘制图元?
我的OpenGL学习进阶之旅OpenGL ES 3.0新功能