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

层层剥开Allegro skill--快速抓取并写入Allegro软件【呕血创作,转载注明】

Allegro skill eda pcb

qq_36492361的博客 1252

EDSR-PyTorch实战:从模型下载到超分辨率图像生成

本文详细介绍了如何使用PyTorch实现EDSR模型进行超分辨率图像生成,包括环境配置、模型下载、参数调优及常见问题解决方案。EDSR作为超分辨率重建的利器,通过深度残差网络显著提升图像质量,特别适合老照片修复等场景。文章还提供了视频处理和自定义训练的进阶技巧,帮助开发者快速掌握这一技术。

weixin_29046035的博客 457

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

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

weixin_34119722的博客 459

java 二维码生成及其标签打印

本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先...

孙小牟的博客 4942

写给 python 程序员的 OpenGL 教程

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

Python开发者 8405

实证研究之|stata清洗charls数据

stata

qq_45313933的博客 6759

【Python计量】linearmodels面板数据回归(一)

我们以伍德里奇《计量经济学导论现代方法》的”第14章高级面板数据方法“的案例14.1为例,使用jtrain中的数据来进行固定效应估计。

mfsdmlove的博客 9277

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

小程序设计中的区块链应用:数字藏品实现

本文旨在为开发者提供在小程序中实现区块链数字藏品功能的完整技术方案。区块链与数字藏品的基础概念智能合约的设计与实现小程序与区块链的交互方式数字藏品的完整实现流程文章将从基础概念入手,逐步深入到技术实现层面,最后通过完整项目案例展示数字藏品在小程序中的实现方式。每个技术点都会配合代码示例和架构图进行说明。区块链:一种分布式数据库技术,通过加密算法保证数据不可篡改数字藏品:基于区块链技术的数字资产,具有唯一性和可验证性NFT。

小程序开发 1350

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

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

Alexabc3000的专栏 1552

通信算法之325:无人机云哨协议及发射机接收机仿真算法

【代码】通信算法之325:无人机云哨物理层协议及发射机接收机仿真代码。

leegang12的专栏 362

Python 爬虫实战:医学临床指南爬取(含 PDF 解析与结构化存储)

在当今数字化时代,医学临床指南作为医生进行科学诊疗的重要参考资料,包含大量经过临床验证的诊疗路径和建议。这些指南通常发布在权威医学网站上,数量庞大且更新频繁。如何自动化地抓取并存储这些指南,成为医疗数据分析、医学研究以及医疗 AI 模型训练等工作的关键第一步。本文将系统讲解如何利用 Python 爬虫技术从权威医学网站爬取临床指南内容,并实现 PDF 解析与结构化存储。

u014481728的博客 449

用Python做Opengl的编程

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

niuge8905的博客 7668

计算机控制技术及应用

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

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

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

weixin_39778815的博客 181

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

温度PID控制PLC程序

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

搭建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、付费专栏及课程。

余额充值