Qt 4.6 OpenGL GLSL
Posted
技术标签:
【中文标题】Qt 4.6 OpenGL GLSL【英文标题】: 【发布时间】:2010-05-03 00:38:08 【问题描述】:我试图找到像 NeHe 的 Qt 教程,这些教程都在 GLSL 中。因为让我们面对现实吧,过去的 OpenGL 已经死了,而着色器现在是唯一的方法。在 Qt-4.6 中,他们引入了 QMatrix4x4、QVector3 和 Shader 类。但我找不到任何教程。
所有我找到的,都使用蹩脚的 SDL 和/或 GLUT(它们完全没用)。
【问题讨论】:
SDL 和 GLUT 并非没用。 IMO 它们只是具有不同目的的不同库。 Qt 也一样。 对我来说它们是因为我不会使用它们 【参考方案1】:在语言和 GUI 框架之间移植 OpenGL 代码不应该对代码有太大的改变。例如,当从 GLUT 移动到 Qt 时,您将 GLUT 的 reshape 代码移动到 QGLWidget 的 resizeGL 函数中,并将 GLUT 的显示函数移动到 QGLWidget 的 paintGL 函数中。这是除了设置之外从 GLUT 到 Qt 的最大变化。
除此之外,几乎所有的东西都附上了一些额外的实用程序和课程。您基本上必须在需要时寻找课程。就像“我要使用着色器,所以让我们看看 Qt 是否有任何辅助类”。您会发现一个名为 QGLShader 的类,它似乎有帮助,但它没有任何文档,因此您应该尝试另一个可能具有 QGLShaderProgram 之类的文档的类。
http://doc.trolltech.com/4.6/qglshaderprogram.html#details
跳转到详细信息,它为您提供了如何使用它和 QGLShader 类的示例/教程。
对于向量和矩阵等较小的类,您只需阅读它们的函数文档,这很简单。例如,向量有一个 QVector3 类。我可以查看它的类页面,并看到它具有我在向量类中所期望的正常功能,例如规范化、添加等。关于这种简单事情的教程并不能真正帮助我。
根据我的经验,这是在 OpenGL 中使用包装器的标准方法。例如,在 JOGL 中有一个很大的 Texture 类,它对纹理 io 很有帮助。当我需要添加纹理时,我只是通过在 javadoc 中搜索“纹理”来找到它。
【讨论】:
以上是关于Qt 4.6 OpenGL GLSL的主要内容,如果未能解决你的问题,请参考以下文章
使用 SDL2 和 xcode 4.6。我设法创建了一个 OpenGL 3.2 核心上下文。但是不能使用 glsl 1.50