C++ Qt 4.6 OpenGL GLSL

C++ Qt 4.6 OpenGL GLSL,c++,qt,opengl,glsl,C++,Qt,Opengl,Glsl,我试图找到像NeHe一样的Qt教程,它们都在GLSL中。因为让我们面对现实吧,过去的OpenGL已经死了,现在只有着色器了。在Qt-4.6中,他们引入了QMatrix4x4、QVector3和着色器类。但是我找不到这方面的任何教程 我发现的所有工具都使用蹩脚的SDL和/或GLUT(这些工具毫无用处)。在语言和GUI框架之间移植OpenGL代码不会对代码产生太大的影响。例如,从GLUT移动到Qt时,将GLUT的重塑代码移动到QGLWidget的resizeGL函数中,将GLUT的显示函数移动到QG

我试图找到像NeHe一样的Qt教程,它们都在GLSL中。因为让我们面对现实吧,过去的OpenGL已经死了,现在只有着色器了。在Qt-4.6中,他们引入了QMatrix4x4、QVector3和着色器类。但是我找不到这方面的任何教程


我发现的所有工具都使用蹩脚的SDL和/或GLUT(这些工具毫无用处)。

在语言和GUI框架之间移植OpenGL代码不会对代码产生太大的影响。例如,从GLUT移动到Qt时,将GLUT的重塑代码移动到QGLWidget的resizeGL函数中,将GLUT的显示函数移动到QGLWidget的paintGL函数中。这是从GLUT到Qt的最大变化,除了设置内容

除此之外,几乎所有的东西都附加了一些额外的实用程序和类。你基本上需要在需要的时候找一个类。比如“我将使用一个着色器,让我们看看Qt是否有任何帮助器类”。您会发现一个名为QGLShader的类,它似乎有帮助,但它没有任何文档,因此您应该尝试另一个可能有QGLShaderProgram之类文档的类

跳转到细节,它为您提供了如何使用它和QGLShader类的示例/教程

对于较小的类,如向量和矩阵,您只需阅读它们的函数文档,这非常简单。例如,向量有一个QVector3类。我可以查看它的类页面,看到它具有我在向量类中所期望的正常功能,如规范化、添加等。关于这样简单的内容的教程对我没有帮助


根据我的经验,这是在OpenGL中使用包装器的标准方法。例如,在JOGL中,有一个大的纹理类,这对纹理io很有帮助。当我需要添加纹理时,我只是通过在javadoc中搜索“纹理”找到了它

SDL和过剩并不是无用的。在我看来,它们只是不同的图书馆,有着不同的目的。Qt是一样的。对我来说是一样的,因为我不会使用它们