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()
OpenGL-绘制一个正方体
猜你喜欢
转载自blog.csdn.net/u014723479/article/details/128586196
今日推荐
周排行