在Qt中使用顶点数组

时间:2015-10-02 15:55:51

标签: arrays qt opengl vertex

在搞乱实现VBO的Qt方式后,我想在paintGL()方法中使用常规顶点数组。 但是,QOpenGLWidget / QOpenGLFunctions似乎不支持某些命令:

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, &currentSkeleton);
    glDrawElements(GL_LINES, 38, GL_UNSIGNED_INT, &skeletonIndices);
    glDisableClientState(GL_VERTEX_ARRAY);

编译抛出3 x错误LNK2019,未解析的extern符号:

... "__imp__glDisableClientState@4" ...
...  "__imp__glVertexPointer@16"    ...
... "__imp__glEnableClientState@4" ...
fatal error LNK1120: 3 unresolved externals 

我已经尝试过包括

之类的内容了
#include <QOpenGLFunctions_3_2_Core>
#include <QOpenGLFunctions_3_2_Compatibility>

有什么我想念的吗? 我可以毫无问题地使用 glBindTexture glTexImage2D ......

1 个答案:

答案 0 :(得分:-1)

  

实施VBO *的Qt方式

曾经和foerever: 没有这样的事情

顶点缓冲区对象是一个OpenGL概念。

Qt根本不会关心他们。

(是的,有一个Qt课程来帮助你管理VBO,但这里的关键字是 help - 如果你想自己做事,你可以。)< /子>

话虽如此,您应该仔细阅读有关在Windows上使用OpenGL的文档(提示:这是一场噩梦),以及Qt为实现OpenGL而需要采用的解决方法:

http://doc.qt.io/qt-5/windows-requirements.html#graphics-drivers

短篇小说是Qt没有链接opengl32.lib,所以如果你想使用这样的OpenGL函数,你需要通过添加

在你自己的项目中链接它。
LIBS += opengl32.lib

到您的.pro文件。

您可能需要告诉Qt您正在执行此操作,因此您还应设置Qt::AA_UseDesktopOpenGL应用程序属性。阅读这些文档,我不能复制并粘贴所有解释。 :)

最后,2015年修复了管道GL代码?严重?