您当前的位置:首页 > 计算机 > 系统应用 > Windows

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

时间:12-25来源:作者:点击数:

1、首先登录https://www.opengl.org/resources/libraries/glut/,下载下图箭头所指的文件

2、解压缩,如下图所示:

3、粗暴一点,把这些文件全部选中,然后复制到C:\Windows\SysWOW64。

4、接下来打开http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl,下载合适版本的whl文件,如图所示(根据自己所安装Python的版本选择32位或64位):

5、下载到Python3.6的安装目录的scripts文件夹中(注意,不要修改文件名),然后使用pip进行本地安装,如图所示:

6、然后编写Python+OpenGL程序

import sys
from math import pi as PI
from math import sin, cos
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

class MyPyOpenGLTest:
    #重写构造函数,初始化OpenGL环境,指定显示模式以及用于绘图的函数
    def __init__(self, width = 640, height = 480, title = b'MyPyOpenGLTest'):
        glutInit(sys.argv)
        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
        glutInitWindowSize(width, height)
        self.window = glutCreateWindow(title)
        #指定绘制函数
        glutDisplayFunc(self.Draw)
        glutIdleFunc(self.Draw)
        self.InitGL(width, height)

    #根据特定的需要,进一步完成OpenGL的初始化
    def InitGL(self, width, height):
        #初始化窗口背景为白色
        glClearColor(1.0, 1.0, 1.0, 0.0)
        glClearDepth(1.0)
        glDepthFunc(GL_LESS)
        #光滑渲染
        glEnable(GL_BLEND)
        glShadeModel(GL_SMOOTH)
        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, float(width)/float(height), 0.1, 100.0)
        glMatrixMode(GL_MODELVIEW)

    #计算三次贝塞尔曲线上指定参数对应的点坐标
    def getBezier(self, P0, P1, P2, P3, t):
        a0 = (1-t)**3
        a1 = 3 * (1-t)**2 * t
        a2 = 3 * t**2 * (1-t)
        a3 = t**3

        x = a0*P0[0] + a1*P1[0] + a2*P2[0] + a3*P3[0]
        y = a0*P0[1] + a1*P1[1] + a2*P2[1] + a3*P3[1]
        z = a0*P0[2] + a1*P1[2] + a2*P2[2] + a3*P3[2]

        return (x, y, z)

    #定义自己的绘图函数
    def Draw(self):
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
        #平移
        glTranslatef(-3.0, 0.0, -8.0)
        #指定三次贝塞尔曲线的4个控制点坐标
        P0 = (-4, -2, -9)
        P1 = (-0.5, 3, 0)
        P2 = (2, -3, 0)
        P3 = (4.5, 2, 0)
        #指定模式,绘制多边形
        glBegin(GL_LINES)
        #设置顶点颜色
        glColor3f(0.0, 0.0, 0.0)
        #绘制多边形顶点
        for i in range(1001):
            t = i/1000.0
            p = self.getBezier(P0, P1, P2, P3, t)
            glVertex3f(*p)        
        #结束本次绘制
        glEnd()      
       
        glutSwapBuffers()

    #消息主循环
    def MainLoop(self):
        glutMainLoop()

if __name__ == '__main__':
    #实例化窗口对象,运行程序,启动消息主循环
    w = MyPyOpenGLTest()
    w.MainLoop()

运行结果如图所示:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门