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)

#参数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()

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: