我尝试使用glfw
上下文和pyopengl
来创建一个简单的框架来呈现2D环境。我的问题是,当我引入移动对象时,屏幕上就会出现一片混乱的“阴影”,即物体在帧中的位置。在
我怀疑我必须清除一些缓冲区来重置屏幕,但我能看到的唯一的一点是glfw.swap_buffers()
调用。在
简而言之,我不知道从哪里开始,作为一个自学成才的“现代”opengl用户,我甚至不知道哪些gl功能被弃用。在
我的抽签电话:
def triggerRedraw(self):
shaders.glUseProgram(self.completeShader)
try:
self.vbo.bind()
try:
glUniformMatrix4fv(self.cameraMatrixPointer, 1, True, self.cameraMatrix)
glEnableVertexAttribArray(self.vertexPositionPointer)
glEnableVertexAttribArray(self.vertexColorPointer)
stride = 5*4
glVertexAttribPointer(self.vertexPositionPointer, 2, GL_FLOAT, False, stride, self.vbo)
glVertexAttribPointer(self.vertexColorPointer, 3, GL_FLOAT, False, stride, self.vbo+8)
glDrawArrays(GL_TRIANGLES, 0, 6)
finally:
self.vbo.unbind()
glDisableVertexAttribArray(self.vertexPositionPointer)
glDisableVertexAttribArray(self.vertexColorPointer)
finally:
shaders.glUseProgram(0)
# Swap front and back buffers
glfw.swap_buffers(self.window)
# Poll for and process events
glfw.poll_events()
我在主循环中关闭整个VBO,然后调用triggerRedraw
来移动对象。我观察到的是,它首先填充前缓冲区,然后填充后缓冲区,因此我在第3帧上看到2个重叠的对象,而不是第5帧中只有1个对象、3个对象等等。在
我怎样才能阻止这种情况的发生?在
目前没有回答
相关问题 更多 >
编程相关推荐