在搞乱实现VBO的Qt方式后,我想在paintGL()方法中使用常规顶点数组。 但是,QOpenGLWidget / QOpenGLFunctions似乎不支持某些命令:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, ¤tSkeleton);
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 ......
答案 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代码?严重?