|

楼主 |
发表于 2023-5-28 20:32:50
|
显示全部楼层
旋转的立方体(这个旋转,上面的不转)
- import pygame
- from pygame.locals import *
- from OpenGL.GL import *
- from OpenGL.GLU import *
- verticies = (
- (1, -1, -1),
- (1, 1, -1),
- (-1, 1, -1),
- (-1, -1, -1),
- (1, -1, 1),
- (1, 1, 1),
- (-1, -1, 1),
- (-1, 1, 1)
- )
- edges = (
- (0,1),
- (0,3),
- (0,4),
- (2,1),
- (2,3),
- (2,7),
- (6,3),
- (6,4),
- (6,7),
- (5,1),
- (5,4),
- (5,7)
- )
- def Cube():
- glColor3f(0.0, 1.0, 1.0)
- glPolygonMode(GL_FRONT, GL_FILL)
- glPolygonMode(GL_BACK, GL_FILL)
- # 设置两面均为顶点绘制方式
- glBegin(GL_LINES) #glBegin和glEnd()是绘图的必备函数
- for edge in edges:
- for vertex in edge:
- glVertex3fv(verticies[vertex]) #这个函数就是连点,这个函数执行两次画一条线,两点确定一条直线,参数为三维的坐标
- glVertex3f(0,-1,0) #这个函数执行两次画一条线
- glVertex3f(0,0,-1)
- glEnd()
- def main():
- pygame.init() #pygame的一些初始化不用管
- display = (800,600)
- pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
- gluPerspective(450,(display[0]/display[1]), 0.5, 50.0) #http://www.gimoo.net/t/1507/559a3e6f82d63.html
- #参数1是视窗相对于我们眼睛的视角
- #参数2是物体显示的长宽比,和窗口长宽比相同就行
- #参数3和4是z轴近和远的裁剪面的距离,物体在这个之外就看不到
- glTranslatef(0.0,0.0, -5) #Z轴就是我们眼睛到屏幕方向的轴,负是远,正是近,其实就是让物体相对与屏幕在XYZ各方向移动几个距离
- while True:
- for event in pygame.event.get():
- if event.type == pygame.QUIT: #退出事件响应
- pygame.quit()
- quit()
- glRotatef(1, 1, 1, 1)
- #参数1是旋转的速度,
- #参数2是x, y and z的一个坐标,表示从(0,0,0)点到(x,y,z)这条线为轴进行旋转
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #用来删除就得画面,清空画布
- Cube() #创建模型
- pygame.display.flip() #显示画面
- pygame.time.wait(10) #10ms刷新一次
- main()
复制代码 |
|