前言
跟新速度会稍慢一些,因为我有项目要做,请各位看官不要着急哈~
比较复杂的3d可以参考ursina
开始
二维绘图推荐使用pygame,请需要2d绘制的同学们去番外篇看看。
简介
PyOpenGL是OpenGL的python封装,所以想要了解PyOpenGL得先知道OpenGL是什么:
OpenGL(Open Graphics Library)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口,由美国硅图公司(SGI)于1992年6月30日发布。该接口通常用于与图形处理单元交互,以实现硬件加速。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
——来自搜狗百科
安装
sudo pip install pyopengl
即可
注意⚠️
PyOpenGL
是它的名字,pyopengl
是它的包名,OpenGL
是调用时使用的名字
导入库
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
创建我们的窗口
创建一个只需要2d渲染的PyOpenGL窗口,推荐直接复制粘贴:
w,h = <size>
glutInit()
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE)
glutInitWindowSize(w,h)
glutCreateWindow(b"<title>")
glutDisplayFunc(...)
glutIdleFunc(...)
glClearColor(0.0, 0.0, 0.0, 1.0)
gluOrtho2D(-1.0, 1.0, -1.0, 1.0)
glutMainLoop()
其中<size>
填入长和宽,用,
分割。<title>
填入窗口标题。...
(两个...
填如相同的函数即可)是 渲染用的函数。
可以适当删改代码
而创建一个3d渲染的窗口(高能干货预警):
w,h = <size>
glutInit()
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
glutInitWindowSize(w,h)
glutCreateWindow(b'<title>')
glEnable(GL_DEPTH_TEST)
glEnable(GL_TEXTURE_2D)
glClearColor(1.0, 1.0, 1.0, 0.0)
glClearDepth(1.0)
glDepthFunc(GL_LESS)
glShadeModel(GL_SMOOTH)
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable(GL_POINT_SMOOTH)
glEnable(GL_LINE_SMOOTH)
glEnable(GL_POLYGON_SMOOTH)
glMatrixMode(GL_PROJECTION)
glHint(GL_POINT_SMOOTH_HINT,GL_NICEST)
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST)
glHint(GL_POLYGON_SMOOTH_HINT,GL_FASTEST)
glLoadIdentity()
gluPerspective(45.0,w / h, 0.1, 100.0)
glMatrixMode(GL_MODELVIEW)
需要填入的东西同上,可以适当删改代码
绘制我们的犹他茶壶
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def drawFunc():
glClear(GL_COLOR_BUFFER_BIT)
glRotatef(1, 0, 1, 0)
glutWireTeapot(0.5)
glFlush()
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow(b"First")
glutDisplayFunc(drawFunc)
glutIdleFunc(drawFunc)
glutMainLoop()
很显然,如此简单的程序并不需要那么复杂的初始化。
结果:
作者
hit-road
拜拜,下课!
回到顶部