我正在尝试运行 OpenGL Core Profile Qt 演示的 PySide 版本 - How_to_use_OpenGL_Core_Profile_with_Qt。
它使用 QGLBuffer.allocate() 方法(C++ 代码)
float points[] = { -0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, 0.0f, 1.0f,
0.0f, 0.5f, 0.0f, 1.0f };
m_vertexBuffer.allocate( points, 3 * 4 * sizeof( float ) );
Pythonic方式将是:
points = [-0.5, -0.5, 0.0, 1.0,
0.5, -0.5, 0.0, 1.0,
0.0, 0.5, 0.0, 1.0]
m_vertexBuffer.allocate(points)
但是当我运行此代码时,出现以下错误
TypeError: 'PySide.QtOpenGL.QGLBuffer.allocate' called with wrong argument types:
PySide.QtOpenGL.QGLBuffer.allocate(list)
Supported signatures:
PySide.QtOpenGL.QGLBuffer.allocate(void, int = -1)
PySide.QtOpenGL.QGLBuffer.allocate(int)
我发现用于此功能的单元测试- 它使用 QByteArray。
data = QByteArray("12345")
b.allocate(data)
但我不明白如何将 Python 列表转换为 QByteArray 或将分配与列表一起使用。还是 PySide 包装函数中的错误?