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/pythonlibs/#pyopengl,下载合适版本的whl文件,如图所示(根据自己所安装Python的版本选择32位或64位):

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

6、然后编写Python+OpenGL程序

importsys

frommath importpi asPI

frommath importsin, cos

fromOpenGL.GLimport*

fromOpenGL.GLU import*

fromOpenGL.GLUT import*

classMyPyOpenGLTest:

#重写构造函数,初始化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的初始化

defInitGL(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)

#计算三次贝塞尔曲线上指定参数对应的点坐标

defgetBezier(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)

#定义自己的绘图函数

defDraw(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)

#绘制多边形顶点

fori inrange(1001):

t = i/1000.0

p = self.getBezier(P0, P1, P2, P3, t)

glVertex3f(*p)

#结束本次绘制

glEnd()

glutSwapBuffers()

#消息主循环

defMainLoop(self):

glutMainLoop()

if__name__ == '__main__':

#实例化窗口对象,运行程序,启动消息主循环

w = MyPyOpenGLTest()

w.MainLoop()

运行结果如图所示:

-------------分割线-------------

今日习题(应屋友要求,偶尔发点题目大家做做,第二天发答案):

已知x = [1,2,3,2,1,2,3],那么表达式[x.index(i) for i in x if i==3]的值是什么?为什么?返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值