PyOpenGL是一个用于Python语言的OpenGL绑定库,它允许开发者使用Python语言进行OpenGL编程。OpenGL是一种跨平台的图形库,用于渲染2D和3D图形。VBO(Vertex Buffer Object)是一种用于高效渲染图形的技术,它将顶点数据存储在显存中,减少了数据传输的开销。
绘制不同颜色的多个三角形可以通过以下步骤实现:
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
glutInit()
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB)
glutInitWindowSize(800, 600)
glutCreateWindow(b"PyOpenGL - Multiple Triangles")
vertices = [
-0.5, -0.5, 0.0,
0.5, -0.5, 0.0,
0.0, 0.5, 0.0,
-0.5, 0.5, 0.0,
0.5, 0.5, 0.0,
0.0, -0.5, 0.0
]
colors = [
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0,
1.0, 1.0, 0.0,
0.0, 1.0, 1.0,
1.0, 0.0, 1.0
]
vbo = glGenBuffers(2)
glBindBuffer(GL_ARRAY_BUFFER, vbo[0])
glBufferData(GL_ARRAY_BUFFER, len(vertices) * 4, (GLfloat * len(vertices))(*vertices), GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, vbo[1])
glBufferData(GL_ARRAY_BUFFER, len(colors) * 4, (GLfloat * len(colors))(*colors), GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, vbo[0])
glVertexPointer(3, GL_FLOAT, 0, None)
glBindBuffer(GL_ARRAY_BUFFER, vbo[1])
glColorPointer(3, GL_FLOAT, 0, None)
glEnableClientState(GL_VERTEX_ARRAY)
glEnableClientState(GL_COLOR_ARRAY)
glDrawArrays(GL_TRIANGLES, 0, 6)
glDisableClientState(GL_VERTEX_ARRAY)
glDisableClientState(GL_COLOR_ARRAY)
glutSwapBuffers()
领取专属 10元无门槛券
手把手带您无忧上云