- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
19天前关闭。
截至19天前,社区正在审查是否重新讨论这个问题。
Improve this question
我尝试在pyOpenGL中设置一个简单的3D引擎。我当前的目标是实现一个2D矩形显示在屏幕上,这根本不起作用。(没有任何东西被渲染到屏幕上,程序也没有抛出任何异常。)
我使用的渲染方法如下所示:
@staticmethod
def render(model: RawModel):
glBindVertexArray(model.get_vao_id())
glEnableVertexAttribArray(0)
glDrawArrays(GL_TRIANGLES, 1, model.get_vertex_count())
glDisableVertexAttribArray(0)
glBindVertexArray(0)
我猜想glDrawArrays()方法可能出了问题,这是由于我绑定Buffer数据的方式造成的:
@classmethod
def bind_indices_buffer(cls, attribute_number: int, data: list):
data = numpy.array(data, dtype='float32')
vbo_id = glGenBuffers(1)
cls.__vbos.append(vbo_id)
glBindBuffer(GL_ARRAY_BUFFER, vbo_id)
glBufferData(GL_ARRAY_BUFFER, data, GL_STATIC_DRAW)
glVertexAttribPointer(attribute_number, 3, GL_FLOAT, False, 0, 0)
glBindBuffer(GL_ARRAY_BUFFER, 0)
1条答案
按热度按时间gz5pxeao1#
问题就在这里:
glVertexAttribPointer(attribute_number, 3, GL_FLOAT, False, 0, 0)
glVertexAttribIPointer
的lase参数的类型是const GLvoid *
。因此参数必须是None
或ctypes.c_void_p(0)
,但不能是0。