一篇就够的超良心pyOpenGL入门教程,不香喷我! - CSDN博客

文章推薦指數: 80 %
投票人數:10人

OpenGL (python版本)OpenGL是用于渲染2D、3D矢量图形的扩语言、跨平台的应用程序编程接口。

这个接口由近350个不同的函数调用组成,用来从简单的图形 ... 一篇就够的超良心pyOpenGL入门教程,不香喷我! 光子俊 于 2020-03-0513:56:24 发布 8282 收藏 80 分类专栏: python 编程语言 科研小技巧 文章标签: c++ python opengl 可视化 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/edj_13/article/details/104673528 版权 python 同时被3个专栏收录 11篇文章 8订阅 订阅专栏 编程语言 22篇文章 2订阅 订阅专栏 科研小技巧 17篇文章 4订阅 订阅专栏 OpenGL(python版本) OpenGL是用于渲染2D、3D矢量图形的扩语言、跨平台的应用程序编程接口。

这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。

而另一种程序接口系统是仅用于MicrosoftWindows上的Direct3D。

OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。

博客内容是基于pythonOpenGL进行讲解,感觉C++有点难,等到后面有时间了再学习,不过都是想通的,我是基于C++教程或网站整理的,对于python开发者或者C++开发者都是适用的。

划重点了!!! 这次真的很用心在做这个教程,绘图整理不易希望大家点赞,关注一波!!!,这样我才能更加努力创作呀!!! 1.第一个例子 首先在上一小节安装好OpenGL后我们先不管其他的先运行一个例子看看效果,对于这个例子的细节我们可以先忽略,我就简单把它作为后面讲解的模板了,废话不多说先上代码: importnumpyasnp fromOpenGL.GLimport* fromOpenGL.GLUimport* fromOpenGL.GLUTimport* classDemo(object): def__init__(self): #self.geometry=geometry glutInit()#启动glut glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA) glutInitWindowSize(400,400) glutCreateWindow(b"HelloOpenGL")#设定窗口标题 glutDisplayFunc(self.draw_geometry)#调用函数绘制 self.init_condition()#设定背景 glutMainLoop() definit_condition(self): glClearColor(1.0,1.0,1.0,1.0)#定义背景为白色 gluOrtho2D(-8.0,8.0,-8.0,8.0)#定义xy轴范围 defrender(self): pass defdraw_geometry(self): glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0,0.0,0.0)#设定颜色RGB glBegin(GL_QUADS) glVertex2f(-2,2) glVertex2f(-2,5) glVertex2f(-5,5) glVertex2f(-5,2) glEnd() glFlush()#执行绘图 if__name__=="__main__": Demo() 运行上述代码后相应的显示为: 通过上面的例子我们简单运行了一个例子,请大家将代码拷贝为你的模板,将在后面学习中继续使用呢,好了接下来就开始我们的OpenGL学习之旅吧! 2.基本属性 绘制一个基本的二维或三维图形都是从最基本的坐标系统和绘制点、线和多边形开始,首先需要了解这些的基本约定,这一节讨论xy平面或xyz空间固定位置的绘制图形。

注意:所有调用glVertex*的命令必须通过OpenGL的命令glBegin()和glEnd()括起来,这两个命令给出了绘图的信号。

相应的语法为: glBegin(mode) ..... glEnd() 相应的mode为由矢量指定的类型,总共可以接受10个符号常数,分别为:GL_POINTS,GL_LINES,GL_LINE_STRIP,GL_LINE_LOOP,GL_TRIANGLES,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN,GL_QUADS,GL_QUAD_STRIP和GL_POLYGON。

上述不同的mode参数的意义可通过下面的示意图给出相应的解释:通过上面的几个示意图就可以清晰了解我们在绘图时需要选择的mode是啥了,是不是感觉超级简单,感觉这一块内容下面的都不要看了呢! 点 通过下面的语句可画出三个点: glBegin(GL_POINTS) glVertex2f(1.0,1.0) glVertex2f(2.0,1.0) glVertex2f(2.0,2.0) glEnd() 将其写入一个函数利用**glutDisplayFunc(self.draw_point)**调用,相应函数如下: defdraw_point(self): glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0,0.0,0.0)#设定颜色RGB glBegin(GL_POINTS) glVertex2f(1.0,1.0) glVertex2f(2.0,1.0) glVertex2f(2.0,2.0) glEnd() glFlush() 通过运行我们发现绘制的点非常小,几乎看不见,我们可通过调用下面函数来显示点的大小: glPointSize(n) #Pointsarenpixelsindiameter glEnable(GL_POINT_SMOOTH) glHint(GL_POINT_SMOOTH_HINT,GL_NICEST) glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) 最终效果图为: 线 类似的线的绘制命令如下: glBegin(GL_LINES) glVertex3f(x1,y1,z1) glVertex3f(x2,y2,z2) glVertex3f(x3,y3,z3) glVertex3f(x4,y4,z4) glEnd() 当然如果你嫌画的线条太细,可通过下面下面命令平滑和加宽线条: glLineWidth(n)#Linesarenpixelswide glEnable(GL_Line_SMOOTH) glHint(GL_Line_SMOOTH_HINT,GL_NICEST) glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) 多边形 类似的通过下面的命令绘制三角形: glBegin(GL_TRIANGLES) glVertex3f(x1,y1,z1) glVertex3f(x2,y2,z2) glVertex3f(x3,y3,z3) glEnd() 下面通过绘制一个三角形来加深我们的理解,具体效果如下: 相应的定义三角形的函数式为: defdraw_triangles(self): glClear(GL_COLOR_BUFFER_BIT) glBegin(GL_TRIANGLES) glColor3f(1,0,0) glVertex3f(-0.5,-0.5,0.0) glColor3f(0,1,0) glVertex3f(0.5,-0.5,0) glColor3f(0,0,1) glVertex3f(0,0.5,0) glEnd() glFlush() 而绘制四边形命令为: glBegin(GL_QUADS) glVertex3f(x1,y1,z1) ...... glVertex3f(xn,yn,zn) glEnd() 现在我们再绘制一个实例来加深我们的理解,相应效果图为: 具体的绘制图形的函数式为: defdraw_polygon(self): glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0,1.0,1.0)#设定颜色RGB glBegin(GL_LINES) datas=[-2.5+i*0.25foriinrange(21)] foriindatas: glVertex3f(i,0,2.5) glVertex3f(i,0,-2.5) glVertex3f(2.5,0,i) glVertex3f(-2.5,0,i) glEnd() glBegin(GL_TRIANGLE_STRIP) glColor3f(1,1,1) glVertex3f(0,2,0) glColor3f(1,0,0) glVertex3f(-1,0,1) glColor3f(0,1,0) glVertex3f(1,0,1) glColor3f(0,0,1) glVertex3f(0,0,-1.4) glColor3f(1,1,1) glVertex3f(0,2,0) glColor3f(1,0,0) glVertex3f(-1,0,1) glEnd() glFlush() 通过这一小节的学习我们熟悉了PyOpenGL中基本元素的绘制,可以利用基本模板绘制图形,而OpenGL的学习之旅才真正的开始,涉及到的东西还比较多,下面大家可以自己尝试构建一下下面的实例,具体实现后面揭晓。

课后作业: 光子俊 关注 关注 26 点赞 踩 80 收藏 打赏 7 评论 一篇就够的超良心pyOpenGL入门教程,不香喷我! OpenGL(python版本)OpenGL是用于渲染2D、3D矢量图形的扩语言、跨平台的应用程序编程接口。

这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。

而另一种程序接口系统是仅用于MicrosoftWindows上的Direct3D。

OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。

博客内容是基于pythonOpenGL进行讲解,感觉C+... 复制链接 扫一扫 专栏目录 加州理工大学PythonOpenGL教程 10-01 加州理工大学PythonOpenGL教程,清楚简单,适合初学者,若有任何学术/技术上的以为,欢迎与我交流[email protected] pyOpenGL教程 05-30 pythonandopengl使用介绍PPT 评论 7 您还未登录,请先 登录 后发表或查看评论 PyOpenGL骨架动画:使用PyOpenGL的OpenGL骨架动画 02-04 PyOpenGL骨骼动画 使用PyOpenGL的OpenGL骨骼动画 SebastianLague的Blender教程 TheThinMatrix的骨骼动画教程 PyOpenGL-skeleton-animtioncsdn博客页面 动画gif PyOpenGL——走进3D的世界 qq_45362415的博客 02-27 5097 本文主要记录本人在学习PyOpenGL库的过程中的学习经验和所遇问题的解决办法。

Python绘制3D图(键盘控制) 苦涩精灵的博客 07-26 631 importsys fromOpenGL.GLimport* fromOpenGL.GLUTimport* fromOpenGL.GLUimport* fromPILimportImage classMyPyOpenGLTest: def__init__(self,width=640,height=480,title="KeyboardControl"): glutInit(sys.argv) glutInitDisplayMod pyopengl简单教程.zip 09-23 pyopengl简单教程 超简单的PyOpenGL安装教程,我竟然还要总结一下,有毒!!! 光子俊的博客 03-04 2012 PyOpenGL安装教程 基本介绍 安装教程 PyOpenGL一般通过运行pip命令安装: pipinstallPyOpenGLPyOpenGL_accelerate 一般通过上述命令就可以,当然出现下面问题也可以下载.whl文件进行下载: 通过pip安装失败(一般不会出现) 对于windows用户出现版本不匹配或者安装后出现问题 因此对于windows用户可以通过下载.whl文件... Pyopengl入门系列(一)你好,窗口 q136446838的博客 01-06 372 文章目录1参考资料2入门指引2.1本系列教程起点与终点3利用Pyopengl画一个窗口3.1先亮出代码3.2简化版本 本人这段时间正在做opengl和opencv结合的工作,本打算利用python快速实现,却在项目深入的过程中遇到了许多的OpenGL的相关问题。

网上多数教程都是几篇教程衍生出来,可以解决我的一部分问题,但是并不全面。

自己特此参考一篇c++教程,将其改为python实现。

以记录此段过程之艰辛。

1参考资料 1.C++的opengl教程:link. 2.python的pyopen 【译】【PyOpenGL教程-着色器简介】第一步(基本几何) 赞美月亮的专栏 05-16 3804 原文地址:http://pyopengl.sourceforge.net/context/tutorials/shader_1.html 第一步(基本几何) 在本教程中我们将会学到: -顶点着色器在GLSL中“必须”做什么 -片元着色器“必须”做什么 -什么是VBO对象 -如何激活和停用着色器和VBO -如何渲染简单的几何体 首先我们进行imports,OpenG... PyOpenGL的环境配置心得 不甘平凡的小鸟的专栏 11-27 539 使用pyqt5+pyopengl的注意项 从零开始PyopenGL(1):简单图形绘制 link的博客 03-23 9386 不多废话上代码,注释应该很清楚了#!/usr/bin/envpython #-*-coding:utf-8-*- #@Time:2018/3/2316:25 #@Author:Barry #@Site: #@File:learn.py #@Software:PyCharm fromOpenGL.GLimport* fromOpe... 使用PyOpenGL绘制三维坐标系实例 09-18 今天小编就为大家分享一篇使用PyOpenGL绘制三维坐标系实例,具有很好的参考价值,希望对大家有所帮助。

一起跟随小编过来看看吧 Pygame+PyOpengl我的世界 最新发布 07-24 使用Pygame,PyOpengl来实现我的世界游戏有物品栏+icon+主界面需要使用pipinstall-rrequirements.txt来安装库!!!(其他版本的库可能没用)不是来自fogleman!!!!!! pyopengl.rar 09-23 pythonpyopengl64位的包64位系统必须使用64位的 【译】【PyOpenGL教程-介绍着色器】漫反射、环境光、平行光 赞美月亮的专栏 05-16 2105 漫反射、环境光、方向光 原文地址:http://pyopengl.sourceforge.net/context/tutorials/shader_5.html 本教程在以往教程的基础上添加了: -环境光 -漫射光 -方向光(如,太阳) -法线、法线矩阵 照明是渲染流程中最复杂的部分之一。

目前还没有人提出一种“完美”的实时图像渲染模拟方案(即使是非实时图像也没有真正解决所有材... pyopengl纹理,为什么我不能在pyopengl中绘制纹理? weixin_34969621的博客 12-24 34 I'vegonethroughmanytutorialsandstillIcan'tfigureoutwhatI'mdoingwrong.IfIdisabletexturesitcorrectlydrawsawhitecubebutwhenIenabletexturesitdrawsnothing(orblacksquares... pyopengl纹理_为什么这段代码不能在pyopenGL中显示我的纹理 weixin_39699746的博客 12-24 42 我试着让多程纹理为我工作,但现在我可以让简单的纹理工作,谁能用下面的代码来做什么。

这个例子只是将多边形显示为白色,而不是纹理。

在defloadTexture(name):img=PIL.Image.open(name)#.jpg,.bmp,etc.alsoworkimg_data=numpy.array(list(img.getdata()),numpy.int8)id=... PyOpenGL之3D界面详解(一) absinjun的博客 07-25 3403 本文转自:http://eyehere.net/2011/learn-opengl-3d-by-pyopengl-1/ 承 从pygame的系列教程里3D部分,本想好好说一下OpenGL的,但是感觉这样一来就喧宾夺主了,毕竟OpenGL这东西,好好说明下来要比pygame更加博大精深,所以就考虑另外起一个教程来写着了。

如今pygame的说明基本完成,实战篇完成两个以后,第三个写起来实在... 【译】【PyOpenGL教程-介绍着色器】要求与配置 赞美月亮的专栏 05-16 830 原文地址:http://pyopengl.sourceforge.net/context/tutorials/shader_intro.html 要求/设置 本教程介绍了现代的低级3D渲染技术。

它尽量避免使用“传统”OpenGL入口点。

尽管在可预见的将来,传统的OpenGL可能会在大多数台式机或笔记本电脑的硬件上得到支持,但从技术上讲,它们的使用是不受欢迎的。

我们假设你了解: -一... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页 光子俊 CSDN认证博客专家 CSDN认证企业博客 码龄5年 暂无认证 33 原创 8万+ 周排名 103万+ 总排名 16万+ 访问 等级 1151 积分 96 粉丝 181 获赞 32 评论 733 收藏 私信 关注 热门文章 毕业论文参考文献格式GB/T7714的Endnote设置教程 86576 Python将数据写入文件 22925 一篇就够的超良心pyOpenGL入门教程,不香喷我! 8265 Python批处理文件夹中的txt文件 7038 机器学习线性模型:一元线性回归问题实现(matlab) 6157 分类专栏 linux技巧 4篇 EPICS 1篇 PLC 1篇 S7-Graph 1篇 软件安装 1篇 python 11篇 Git 1篇 GitHub 1篇 编程语言 22篇 科研小技巧 17篇 机器学习 6篇 推荐系统 1篇 概率统计学 1篇 数据结构与算法 1篇 最新评论 一篇就够的超良心pyOpenGL入门教程,不香喷我! weixin_55270244: 博主你好!请问怎么用pyOpenGL加载STL模型 解决Centos缺少共享库:libstdc++.so.6(完美解决) tcconan: yuminstalllibstdc++-4.8.5-44.el7.i868 写错了i868改一下i686,作者辛苦手敲的 yuminstalllibstdc++-4.8.5-44.el7.i686 解决Centos缺少共享库:libstdc++.so.6(完美解决) qq_39417448: yum出不来这个安装包怎么办 毕业论文参考文献格式GB/T7714的Endnote设置教程 xiamixiami1998: 很好用爱了爱了 毕业论文参考文献格式GB/T7714的Endnote设置教程 LuoBo2021: 多谢楼主,帮了大忙! 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 电脑上CapsLK大小写迟缓的解决办法 Centos系统下安装EPICS系统 如何科学的在Linux系统下添加环境变量 2022年1篇 2021年5篇 2020年16篇 2019年11篇 目录 目录 分类专栏 linux技巧 4篇 EPICS 1篇 PLC 1篇 S7-Graph 1篇 软件安装 1篇 python 11篇 Git 1篇 GitHub 1篇 编程语言 22篇 科研小技巧 17篇 机器学习 6篇 推荐系统 1篇 概率统计学 1篇 数据结构与算法 1篇 目录 评论 7 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 打赏作者 光子俊 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?