我试图找到像Nehe的Qt教程,这些教程都在GLSL中。因为让我们面对现实,过去的OpenGL已经死了,而着色器是现在唯一的方式。通过Qt-4.6,他们推出了QMatrix4x4,QVector3和Shader类。但我找不到任何相关的教程。
我找到的所有人都使用蹩脚的SDL和/或GLUT(这些都是无用的)。
答案 0 :(得分:2)
在语言和GUI框架之间移植OpenGL代码不应该更改代码。例如,当从GLUT移动到Qt时,您将GLUT的重塑代码移动到QGLWidget的resizeGL函数中,并将GLUT的显示函数移动到QGLWidget的paintGL函数中。除了设置之外,这是从GLUT到Qt的最大变化。
除此之外,所有内容都可以作为小额奖励实用程序和课程。您基本上必须在需要时寻找课程。就像“我将使用着色器一样,让我们看看Qt是否有任何辅助类”。你找到一个名为QGLShader的类,它似乎有帮助,但它没有任何文档,所以你应该尝试另一个可能有QGLShaderProgram等文档的类。
http://doc.trolltech.com/4.6/qglshaderprogram.html#details
跳转到详细信息,它为您提供了如何使用它和QGLShader类的示例/教程。
对于像vector和matrices这样的小类,你必须阅读它们的函数文档,这很简单。例如,向量具有QVector3类。我可以看一下它的类页面,看它有正常的功能,我期望在矢量类中进行规范化,添加等等。这个简单的教程对我来说并没有什么帮助。
根据我的经验,这是在OpenGL中使用包装器的标准方法。例如,在JOGL中,有一个很大的Texture类,它有助于纹理io。当我需要添加纹理时,我发现它只是通过在javadoc中搜索“texture”。