Python 之 OpenGL程序环境

OpenGL学习笔记(2)第一个程序——犹他茶壶(Teapot) 好了,python+opengl的开发环境搭建好后,我们就可以开始学习了。 这里,我们先学习一个常见的例子——犹他茶壶。 先贴代码 from OpenGL.GL import *from OpenGL.GLU import *from OpenGL.GLUT import * def drawFunc(): glClear(GL_COLOR_BUFFER_BIT) 阅读详情

        Python+OpenGL,想想都觉得很刺激~~

        首先还是下载PyOpenGL包:http://pypi.python.org/pypi/PyOpenGL/3.0.2

       在windows下,安装还是很简单的,安装程序会主动找到你的python目录,所以可以直接下一步。

       安装好了后,就来写一个脚本测试一下~

test.py

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
 
def Draw():
    glClear(GL_COLOR_BUFFER_BIT)
    glRotatef(0.5, 0, 1, 0)
    glutWireTeapot(0.5)
    glFlush()
 
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("test")
glutDisplayFunc(Draw)
glutIdleFunc(Draw)
glutMainLoop() 


        可以看到,在python中同样可以使用glut来创建窗口,语法遵从Python,但是大体上的结构还是和c语言的glut库差不多。

       在OpenGL织梦之旅【第二章】第2节.实现动画这篇博文中,我用c语言,用OpenGL实现了一个显示时钟的程序。和上面的脚本一样,那个程序也使用了glut库,那是不是意味着用Python也能够实现同样的东西呢?

       答案当然是!

       于是,我抱着好奇的心态去尝试了一下。最后居然成功了。。

       有图有真相:

在转换的时候,有很多注意事项:

       1.全局变量的处理。在Update函数和Draw函数中会用到h,m,s三个表示时间的全局变量。在Update函数中给他们更新值的时候需要用global关键字来声明一下。

       2.三角函数。记得import math,调用的时候也要用math.cos和math.sin。

       3.变量的数据类型。因为Python中不需要事先声明变量类型,所以有些值在赋值时需要注意,如果是浮点实数,但值需要暂时赋为一个整数时,需要在后面加上.0。如count=60.0

       4.缩进的问题。在Python中代码段是用缩进来标示的。在c语言的OpenGL中,我习惯性地把glBegin(XXX)后定点的语句缩进一下,但是这个在Python中是会出现问题的。

最后附上代码:

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import math
import  time
h=0
m=0
s=0
def Draw():
    PI=3.1415926 
    R=0.5
    TR=R-0.05
    glClear(GL_COLOR_BUFFER_BIT)
    glLineWidth(5)
    glBegin(GL_LINE_LOOP)
    for i in range(100):
        glVertex2f(R*math.cos(2*PI/100*i),R*math.sin(2*PI/100*i))
    glEnd()
    glLineWidth(2)
    for i in range(100):
        glBegin(GL_LINES)  
        glVertex2f(TR*math.sin(2*PI/12*i),TR*math.cos(2*PI/12*i))  
        glVertex2f(R*math.sin(2*PI/12*i),R*math.cos(2*PI/12*i))  
        glEnd()
    glLineWidth(1) 

    h_Length=0.2
    m_Length=0.3
    s_Length=0.4
    count=60.0
    s_Angle=s/count
    count*=60
    m_Angle=(m*60+s)/count
    count*=12
    h_Angle=(h*60*60+m*60+s)/count
    glLineWidth(1) 
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0) 
    glVertex2f(s_Length*math.sin(2*PI*s_Angle),s_Length*math.cos(2*PI*s_Angle))
    glEnd()
    glLineWidth(5)
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0)
    glVertex2f(h_Length*math.sin(2*PI*h_Angle),h_Length*math.cos(2*PI*h_Angle))
    glEnd()
    glLineWidth(3)
    glBegin(GL_LINES)
    glVertex2f(0.0,0.0)
    glVertex2f(m_Length*math.sin(2*PI*m_Angle),m_Length*math.cos(2*PI*m_Angle)) 
    glEnd()
    glLineWidth(1)
    glBegin(GL_POLYGON) 
    for i in range(100):
        glVertex2f(0.03*math.cos(2*PI/100*i),0.03*math.sin(2*PI/100*i));  
    glEnd()
    glFlush()
def Update():
    global h,m,s
    t=time.localtime(time.time())
    h=int(time.strftime('%H',t))
    m=int(time.strftime('%M',t))
    s=int(time.strftime('%S',t))
    glutPostRedisplay()
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("My clock")
glutDisplayFunc(Draw)
glutIdleFunc(Update)
glutMainLoop() 


 

【OpenGL教程2】 简单案例介绍Python 中的 OpenGL 在本教程中,我们了解了 OpenGL、如何下载和安装它,然后将其用作一个简短的示例程序。在此示例中,我们还练习了使用 OpenGL 制作基本形状,这使我们深入了解了每当需要使用此库绘制某些内容时需要进行的一些复杂函数调用。总而言之,OpenGL 非常丰富,并且随着我们深入研究它,发现它会变得越来越复杂。 阅读详情

相关推荐

【OpenGL教程4】高级 OpenGL实现:使用 PyGame 和 PyOpenGL混合编程

继上一篇文章《通过 Python 了解 OpenGL》中我们为进一步学习奠定了基础之后,我们可以使用PyGame和PyOpenGL进入OpenGL。

gongdiwudu的专栏 6567

跟我学Python图像处理丨带你入门OpenGL

介绍Python和OpenGL的入门知识,包括安装、语法、基本图形绘制等。

华为云官方博客 5104

图形渲染编程:使用Python实现基于OpenGL的3D图形渲染

通过这个简单的示例,你可以了解到如何使用Python和OpenGL库进行基本的3D图形渲染。然后,我们使用glBegin和glEnd函数定义一个立方体的顶点,并使用glVertex3f函数指定每个顶点的坐标。然后,我们需要定义一个渲染函数。在这个函数中,我们可以使用OpenGL的函数来绘制我们想要的3D场景。最后,我们调用init函数进行初始化,并使用glutMainLoop函数启动OpenGL的主循环。通过调用glutDisplayFunc函数,我们将渲染函数指定为OpenGL的显示回调函数。

ByteSparkX的博客 998

Python面试题:如何使用PyOpenGL进行OpenGL编程

在这个流程中,我们使用PyOpenGL结合Pygame创建了一个简单的OpenGL应用程序。创建一个OpenGL窗口。绘制基本形状(如三角形)。使用现代OpenGL编程中的着色器。PyOpenGL提供了一个很好的方式来学习OpenGL的基本概念,同时利用Python的简洁性。你可以在此基础上扩展,实现更复杂的图形和游戏项目。

杰哥在此的专栏 2209

Python中的OpenGL编程环境

在这段代码中,我们使用了OpenGL的一些函数来绘制一个简单的矩形。然后,使用glBegin和glEnd函数定义了一个多边形,并使用glVertex2f函数定义了多边形的各个顶点。通过PyOpenGL库,我们可以使用Python语言来进行OpenGL图形编程,实现各种复杂的图形效果和交互功能。注意:在运行OpenGL程序时,可能需要安装一些相关的依赖库和驱动程序,具体情况可以根据自己的操作系统和环境进行相应的配置。),然后运行该文件即可看到一个简单的OpenGL窗口,其中绘制了一个矩形。

SVIPCODE的博客 524

[Python图像处理] 二十七.OpenGL入门及绘制基本图形(一)

八年前,我正是通过学习OpenGL和C++,通过做“采蘑菇的小矮人”游戏,慢慢走上并爱上了编程。回过头来,我希望通过Python和OpenGL分享一些有趣的知识,提升您的编程兴趣,还原当时的一些记忆。前面一篇文章详细讲解了图像分类原理,并介绍基于KNN、朴素贝叶斯算法的图像分类案例。这篇文章是介绍Python和OpenGL的入门知识,包括安装、语法、基本图形绘制等。基础性文章,希望对你有所帮助。

杨秀璋的专栏 1万+

python中变量不需要事先声明_Python 之 OpenGL程序环境

Python+OpenGL,想想都觉得很刺激~~在windows下,安装还是很简单的,安装程序会主动找到你的python目录,所以可以直接下一步。安装好了后,就来写一个脚本测试一下~test.pyfrom OpenGL.GL import *from OpenGL.GLU import *from OpenGL.GLUT import *def Draw():glClear(GL_COLOR_BU...

weixin_39969953的博客 243

Python图形编程-OpenGL开发环境搭建

本文将详细介绍如何搭建基于Python的OpenGL开发环境。这为我们后面对GPU图像处理打开基础。

视觉与物联智能 756

openglpython编程_Python之OpenGL程序环境

Python+OpenGL,想想都觉得很刺激~~首先还是下载PyOpenGL包:http://pypi.python.org/pypi/PyOpenGL/3.0.2在Windows下,安装还是很简单的,安装程序会主动找到你的python目录,所以可以直接下一步。安装好了后,就来写一个脚本测试一下~test.pyfrom OpenGL.GL import *from OpenGL.GLU impor...

weixin_39689428的博客 263

深入理解Cornerstone3D.js渲染Stack影像数据

这个是调用的core\src下的init.ts的init方法,作用是:初始化cornerstone-core,检测客户端是否支持WebGL,默认情况下是支持中等GPU层级.另外一个重要的是实例化WebWorkManager.WebWorkManager类似于Java的线程池,是用来对Web Worker进行管理的管理器。使用DICOMwebClient获取影像文件的元数据,然后将它们缓存到imageLoader的metaDataManager中,在上面我们可以输出元数据看一下是什么。

wangwei19820517的博客 1492

python三维图形转换视角_三维图形程序开发01.配置Python下OpenGL编程环境

“本系列教程主要讲解利用Python和OpenGL开发三维图形程序。这里主要用到的工具库是glfw开源图形库。本系列内容较难。要求学生对几何和编程有一定的了解。建议初三以上同学学习。”三维图形开发介绍———大部份编程软件都提供二维图形的绘图指令。像PyGame,turtle,tkinter、wxWidgets等。但要开发三维图形程序,就需借助第三方图形库。OpenGL、DirectX和V...

weixin_34119722的博客 459

Layout常见错误汇总-不定时更

1、在做LVS时,出现中断错误 解决方法: 重新建立新的schematic和layout文件,对应好其中的元器件,同时两个文件的名字也要对应好“schematic”和“layout”,其他名字的话软件找不到如何对应。

weixin_38753095的博客 4万+

写给 python 程序员的 OpenGL 教程

(给Python开发者加星标,提升Python技能)作者:牧马人 (本文来自作者投稿)1 预备知识OpenGL 是 Open Graphics Library 的简写,意...

Python开发者 8405

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程

本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。

weixin_29234509的博客 124

Codex 100个真实案例 - 用AI批量清洗Excel脏数据(10万行3分钟搞定)

每个做数据分析的人都被"脏数据"折磨过——空值、重复行、日期格式五花八门、手机号多一位少一位……手动清洗几千行就已经让人崩溃,更别提10万行了。本文将展示如何用 Codex 生成一套完整的 Python pandas 数据清洗工具,从读取Excel/CSV、识别脏数据、自动清洗、生成清洗报告,到可视化对比清洗前后的数据质量,全程自然语言驱动,10万行数据3分钟搞定!

yueyeguzhuo的专栏 88

win10python详细配置_Win10系统配置Python3.6+OpenGL环境详细步骤

原标题:Win10系统配置Python3.6+OpenGL环境详细步骤1、首先登录https://www.opengl.org/resources/libraries/glut/,下载下图箭头所指的文件 2、解压缩,如下图所示: 3、粗暴一点,把这些文件全部选中,然后复制到C:WindowsSysWOW64。4、接下来打开http://www.lfd.uci.edu/~gohlke/pythonl...

weixin_39866881的博客 326

【EB_Tresos专题】-06-配置一个UDS诊断DID

<--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> 结尾 ...

「汽车电子助手」的博客 4085

Python利用OpenGL和GLFW显示纹理贴图的正方形(Win11)

Python利用OpenGL和GLFW显示纹理贴图的正方形

Alexabc3000的专栏 1552

DJI O2协议物理层逆向工程解析:揭开无人机通信的神秘面纱

DJI的O2协议是其OcuSync传输技术的最新演进,应用于Mini 2、Mavic Air 2、Mavic Air 2s和Mavic 3等无人机模型。这种协议结合了多种先进无线通信技术,能够在远距离提供稳定可靠的低延迟连接。O2协议物理层(PHY)是OSI模型的最底层,负责在物理媒介上传输原始数据比特流。它定义了电气特性、调制方式、编码方案、数据传输速率和同步机制等。DJI O2协议的物理层逆向工程是一个复杂但极具价值的领域。

QQ_778132974的博客 2385

HotSpot G1 GC 的分区记账、SATB 并发标记与停顿目标调优解析

线上GC毛刺该调停顿目标、加大新生代还是换收集器?本文从HotSpot G1的设计出发,梳理分区与巨型对象、卡表与记忆集、写屏障与细化线程、停顿预测、SATB并发标记、自适应IHOP、混合回收规则及Full GC兜底,并注明JDK8至JDK27的版本差异。文中在JDK8与JDK17上实测:停顿目标从200ms降到20ms,伊甸区缩小四成、P99下降但仍超目标;巨型对象会反复触发又撤销并发标记;JDK17并行Full GC平均停顿约为JDK8的三成。最后给出日志解读、参数清单、调优流程与选型。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

用Python做Opengl的编程

学这个Opengl的原因是:买的一本计算机图形学的书上所讲的内容都是基于Opnegl,而这部分的内容全部是用C++来表达的。恰好我又不熟悉C++计算机语言,只能退而求其次,用Python语言来解决这个问题,其实用C#也可以。这里就主要讲Python吧,从语法来看,python和C++来编Opengl的程序并没有太大区别,逻辑一样,很好在二者之间转换。Opengl最麻烦的是一个环境配置的问题,搞了好久

niuge8905的博客 7668

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

openglpython编程_ubuntu 下python opengl编程(2)

ok,书接上文,之前的说明了如何在linux环境下搭建python开发opengl环境,并且运行一个示例程序。(很棒,但是是程序自带的一个示例函数,不是我们写的)现在来自己编写opengl的程序。首先要对整个这个程序的结构有所了解glutInit() # 初始化glut工具glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) #设置展示模式,这个我好像还没见过g...

weixin_39778815的博客 181

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

64位系统下 python3.7安装OpenCV、OpenGL

声明:64位系统直接使用pip安装是不可以的,虽然可以安装上但后面会出现错误,如果已经用pip安装了,那么就卸载掉使用这个方法安装。 使用pip安装的错误见:https://blog.youkuaiyun.com/snail9610/article/details/106014343 一、安装OpenCV 1、进入网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 2、选择适合自己的版本:如我选择的就是适用的64位系统、python3.7的版本。然后...

snail9610的博客 1175

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

搭建pyopengl环境

系统环境:Windows11。

笔记的博客 305

解决VScode运行Openai gym例程图形化界面无法正常显示问题,解决“libGL error”与“OpenGL renderer”相关的图形驱动问题

解决VScode运行Openai gym例程图形化界面无法正常显示问题,解决“libGL error”与“OpenGL renderer”相关的图形驱动问题

ZhangHui1214的博客 1079
上一篇: Python 之 多线程编程学习笔记
下一篇: Python 之 BNUOJ代码提交器
plusplus7
博客等级 码龄15年 59粉丝 173原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值