如何在PyOpenGL python綁定到OpenGL中使用glBufferData()?如何在PyOpenGL中使用glBufferData()?
當我在錯誤消息中
Haven't implemented type-inference for lists yet
運行下面的代碼
import sys
from OpenGL.GL import *
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtOpenGL import *
class SimpleTestWidget(QGLWidget):
def __init__(self):
QGLWidget.__init__(self)
def initializeGL(self):
self._vertexBuffer = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, self._vertexBuffer)
vertices = [0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5]
glBufferData(GL_ARRAY_BUFFER, vertices, GL_STATIC_DRAW) # Error
def paintGL(self):
glViewport(0, 0, self.width(), self.height())
glClearColor(0.0, 1.0, 0.0, 1.0)
glClear(GL_COLOR_BUFFER_BIT)
glEnableClientState(GL_VERTEX_ARRAY)
glBindBuffer(GL_ARRAY_BUFFER, self._vertexBuffer)
glVertexPointer(2, GL_FLOAT, 0, 0)
glColor3f(1.0, 0.0, 0.0)
glDrawArrays(GL_QUADS, 0, 4)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = SimpleTestWidget()
w.show()
app.exec_()
然後調用glBufferData()的結果的代碼應該畫上一個綠色背景上的紅色矩形。
謝謝!解決了這個問題。 – user763305
我很困惑,glVertexPointer的第四個參數應該是None;看到後續問題:http://stackoverflow.com/questions/11132716/how-to-specify-buffer-offset-with-pyopengl – user763305
此外,您可以避免必須手動綁定緩衝區使用[VBO包裝]( http://pyopengl.sourceforge.net/documentation/pydoc/OpenGL.arrays.vbo.html)。 – Milliams