python 3d 2
import pygame # 导入 Pygame 库,用于创建游戏窗口和处理事件 from pygame.locals import * # 导入 Pygame 的本地模块,包含常用的变量和函数 from OpenGL.GL import * # 导入 OpenGL 的核心功能 from OpenGL.GLUT import * # 导入 OpenGL 的实用工具库 from OpenGL.GLU import * # 导入 OpenGL 的实用工具库 # 定义立方体的顶点坐标 vertices = ( (1, -1, -1), (1, 1, -1), # 前面的两个顶点 (-1, 1, -1), (-1, -1, -1), # 左面的两个顶点 (1, -1, 1), (1, 1, 1), # 后面的两个顶点 (-1, -1, 1), (-1, 1, 1) # 右面的两个顶点 ) # 定义立方体的面 faces = ( (0, 1, 2, 3), # 前面的四个顶点 (3, 2, 7, 6), # 左面的四个顶点 (6, 7, 5, 4), # 后面的四个顶点 (4, 5, 1, 0), # 右面的四个顶点 (1, 5, 7, 2), # 上面的四个顶点 (4, 0, 3, 6) # 下面的四个顶点 ) # 定义面的颜色 colors = ( (1, 0, 0), # 红色 (0, 1, 0), # 绿色 (0, 0, 1), # 蓝色 (1, 1, 0), # 黄色 (1, 0, 1), # 紫色 (0, 1, 1), # 青色 (1, 1, 1), # 白色 (0, 0, 0) # 黑色 ) def Cube(): """ 绘制立方体 """ glBegin(GL_QUADS) # 开始绘制四边形 for face in faces: x = 0 for vertex in face: x += 1 glColor3fv(colors[x]) # 设置顶点颜色 glVertex3fv(vertices[vertex]) # 设置顶点坐标 glEnd() # 结束绘制四边形 def main(): """ 主函数 """ pygame.init() # 初始化 Pygame display = (800, 600) pygame.display.set_mode(display, DOUBLEBUF | OPENGL) # 创建窗口 gluPerspective(45, (display[0] / display[1]), 0.1, 50.0) # 设置透视参数 glTranslatef(0.0, 0.0, -5) # 平移视图 # Enable depth testing glEnable(GL_DEPTH_TEST) # 启用深度测试 while True: # 主循环 for event in pygame.event.get(): # 处理事件 if event.type == pygame.QUIT: # 如果是退出事件,则退出程序 pygame.quit() quit() glRotatef(1, 3, 1, 1) # 旋转立方体 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # 清除屏幕和深度缓冲 Cube() # 绘制立方体 pygame.display.flip() # 刷新屏幕 pygame.time.wait(10) # 稍微等待一下,减少 CPU 占用 main() # 调用主函数,启动程序