python的cubes怎么使用_如何使用python中的opengl?
上期跟大家说了关于python绘图内容,这期跟大家讲讲能够构造立体图形的python内容,感兴趣的小伙伴可以来看下哦~
1.1 利用python的pygame和OpenGL制作动态正方体cube。
1.2 安装python3.8和pygame(省略)。
1.3 安装OpenGL:pip install PyOpenGL PyOpenGL_accelerate
效果图【动态】:
完整代码:#---导出模块---
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
#---初始化pygame和定义窗口大小---
pygame.init()
#OPENGL|DOUBLEBUF=DOUBLEBUF|OPENGL
#DOUBLEBUF:双缓冲模式(推荐和 HWSURFACE 或 OPENGL 一起使用)
#创建一个 OPENGL 渲染的显示
pygame.display.set_mode((640,480), OPENGL|DOUBLEBUF)
#---元组定义---
#定义正方体的xyz坐标点
CUBE_POINTS = ((0.5, -0.5, -0.5), (0.5, 0.5, -0.5),(-0.5, 0.5, -0.5), (-0.5, -0.5, -0.5),(0.5, -0.5, 0.5), (0.5, 0.5, 0.5),(-0.5, -0.5, 0.5), (-0.5, 0.5, 0.5))
#定义RGB颜色
CUBE_COLORS = ((1, 0, 0), (1, 1, 0), (0, 1, 0), (0, 0, 0),(1, 0, 1), (1, 1, 1), (0, 0, 1), (0, 1, 1))
# 定义面,四个点构成一个面
CUBE_QUAD_VERTS = ((0, 1, 2, 3), (3, 2, 7, 6), (6, 7, 5, 4),(4, 5, 1, 0), (1, 5, 7, 2), (4, 0, 3, 6))
# 定义线,两个点构成一个线
CUBE_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 drawcube():
# "绘制正方体",zip和list法
allpoints = list(zip(CUBE_POINTS, CUBE_COLORS))
#画面积---开始---结束---
glBegin(GL_QUADS)
for face in CUBE_QUAD_VERTS:
for vert in face:
pos, color = allpoints[vert]
#在第2个for下面
glColor3fv(color)
glVertex3fv(pos)
#与第1个for对齐
glEnd()
#边线颜色黑色
glColor3f(0, 0, 0)
# 绘制线---开始---结束---
glBegin(GL_LINES)
for line in CUBE_EDGES:
for vert in line:
pos, color = allpoints[vert]
glVertex3fv(pos)
glEnd()
#---主函数---
def main():
glEnable(GL_DEPTH_TEST)
#初始化 摄像头
glMatrixMode(GL_PROJECTION)
gluPerspective(45.0,640/480.0,0.1,100.0)
glTranslatef(0.0, 0.0, -3.0)
glRotatef(25, 1, 0, 0)
#启动循环---
while True:
#事件检测
event = pygame.event.poll()
#定义退出机制,在pygame的while循环中,这一步必备设置
if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
break
#清除屏幕
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
#摄像机旋转
glRotatef(1,0,1,0)
drawcube()
#刷新画面
pygame.display.flip()
if __name__ == '__main__':
main()
以上内容并不多,大家非常容易消化理解,如需了解更多python实用知识,点击进入PyThon学习网教学中心。
python的cubes怎么使用_如何使用python中的opengl?相关推荐
- python wx窗口无法关闭_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
针对Python这一话题每天后台都会有不少小伙伴提出问题,下面我就将这些问题进行汇整,产出"Python实战问题篇",我认为这些问题非常具有代表性,希望可以帮到大家. 第一类问题: ...
- 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...
- python write 写多行_如何用 Python 执行单行命令
一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了.但有些时候,我仅仅 ...
- python如何初始化对象数组_如何理解Python中的面向对象编程?
(由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...
- python运行界面如何缩小_如何使用Python调整图像大小
作者|Nicholas Ballard 编译|VK 来源|Towards Data Science 可以说,每一个"使用计算机的人"都需要在某个时间点调整图像的大小.MacOS的预 ...
- python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)
Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...
- 计算机编程导论python程序设计答案-学堂云_计算机科学与Python编程导论_作业课后答案...
学堂云_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 保本基金参与股指期货交易,应当根据风险管理的原则,以套期保值为目的.() 基金经理主要依据股票投资价值报告来决定实际的投资 ...
- python游戏小项目简单_[简单学Python] 通过一个小游戏完成Python入门[2]变量和赋值...
变量和赋值 到这里,你已经成功地打印出了千寻的名字和卖身契.与此同时,千寻也成为了汤婆婆的工人,渐渐地,她忘记了自己是谁,遗失了自己"姓名"的信息. 那么,在信息纷繁的代码世界里, ...
- python能做财务分析吗_您可以使用Python进行财务规划和分析吗?
python能做财务分析吗 问题 (The Problem) If you work in the Financial Planning and Analysis area, chances are ...
最新文章
- [Android] Git组件化部署
- 面试题目--MPEG4与H.264的区别
- 如何通过BIPlatform完成多维报表以及图形配置
- 修改使用计算机的名称,Windows 10中修改计算机名称的方法,你知道几种?
- 软件设计师习题笔记-重点习题六
- 2.8 GloVe 词向量
- 管理感悟:学会推论及验证
- p标签里文字不换行,以省略号结束
- 前端开发的几种常用的编辑器
- 浪潮服务器网卡驱动丢失怎么修复,电脑丢失网卡驱动,学会这一招,轻松搞定...
- 从零实现一款12306抢票软件
- lateX 编译中文_受够了 Word 的排版?让专业的 Latex 帮你打造精美文档
- IT十年人生过客-十八-路过机遇
- 云渲染服务器快吗?云渲染具体怎么用??
- 莱布尼兹其实离开我们并不遥远
- 20 行代码编写一个简单的端口扫描器
- 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
- cocos2dx 特效 3D特效
- tomca的用户设置
- 成果分享:边缘智能视频预取和缓存机制
热门文章
- yum 不能安装应用,提示There are no enabled repos Run yum repolist all
- 【MySQL】JavaWeb项目中配置数据库的连接池
- Android源码分析(十一)-----Android源码中如何引用aar文件
- DataGrid数据绑定
- 如何获取用户当前详细的地理位置
- java中 将字符串时间 '2015-9-8 17:05:06' 转化为格式 '2015-09-08 17:05:06'
- using(){},Close(),Dispose()的区别
- HappyLeetcode64:Sqrt(x)
- Android(1)—Mono For Android 环境搭建及破解
- 蓝桥杯第八届省赛JAVA真题----迷宫