因此,我正在使用pyglet学习OpenGL,并使用Assimp(端口:Pyassimp)从Blender导入一些模型。所以这个场景很基本,只有2个立方体,我把它保存在混合体中格式。在下一段代码我只想简单地用它的顶点位置来画一个立方体,没有别的。在
self.scene = pyassimp.load(FILENAME, pyassimp.postprocess.aiProcess_Triangulate) # Load the scene
self.vertices = numpy.array((), dtype=GLfloat)
for v in self.scene.meshes[1].vertices:
self.vertices = numpy.append(self.vertices, v)
self.vbo = pyglet.graphics.vertexbuffer.create_buffer(self.vertices.nbytes, GL_ARRAY_BUFFER, GL_STATIC_DRAW)
glEnableVertexAttribArray(0)
self.vbo.bind()
self.vbo.set_data(self.vertices.ctypes.data)
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0)
接下来的代码是draw事件:
^{pr2}$最终结果是:
你必须在网格的面上循环,从那里读取顶点索引,然后绘制这些面。在
请参见assimp的C示例。它非常简单,展示了如何做,并且可以很容易地移植到python上。 https://github.com/assimp/assimp/blob/master/samples/SimpleOpenGL/Sample_SimpleOpenGL.c
对于
pyglet
,可以使用以下截取:相关问题 更多 >
编程相关推荐