我试图通过实例化渲染许多对象。但是功能
glDrawArraysInstanced()
似乎已在Qt5中删除。它存在于Qt4的QOpenGLFunctions类中,但不存在于Qt5中。
在Qt5中使用实例化的正确方法是什么?
答案 0 :(得分:2)
Qt 4中没有QOpenGLFunctions(Qtpen中已经引入了QOpenGL *类)。
您的两个链接确实指向了两个不同的 Qt 5 类:
QOpenGLFunctions_4_2_Core
和QOpenGLFunctions
。
这两个类都是OpenGL函数解析器,所以你可以编写类似的东西:
// get the object from somewhere (usually, a QOpenGLContext)
QOpenGLFunctions *functions = ...
functions->glCreateShader(...);
functions->glDrawArrays(...);
它们之间的区别是:
_X_Y_Profile
类只能在与类名兼容的Desktop OpenGL上下文中工作(例如,4_2_Core
将适用于版本相同或更大的任何OpenGL上下文超过4.2,核心或兼容性配置文件)。如果您想使用实例化,如果您只针对桌面(因此您至少需要3.1版)或QOpenGLFUnctions_X_Y_Profile
,您可以选择合适的QOpenGLExtraFunctions
。两者都有glDrawArraysInstanced
。