最近学习计算机图形学,需要使用opengl,踩了很多雷,最后终于成功了,总结了一下教程和一些踩雷心得
环境:win10_64位系统、pycharm(本人使用的是python3.8版本)
错误安装如下(错误演示我使用的是python3.6版本)
打开pycharm,如下图打开设置
在project untitled中打开python interpreter,如下图所示
有的教程是让你在这里直接搜索opengl进行安装,然而这里只能安装32位,所以会导致代码是不报错了,可是运行便会报错(glut错误),如下所示
下面是正确安装方法(python3.8演示)
我们不能在pycharm上直接安装opengl,需要在官网上进行下载
链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/
进入后一直向下找,找到pyopengl,我的是python3.8版本,就选择下载箭头指的两个文件(cp38:意思就是python3.8版本;amd64:意思就是64位操作系统)
根据自己的版本进行下载
我的是在直接下载到了c盘中,如下所示
这两个.whl文件需要使用cmd命令窗口进行命令安装,它会直接安装到你的对应版本的库文件中
1
|
pip install pyopengl - 3.1 . 5 - cp38 - cp38 - win_amd64.whl
|
1
|
pip install pyopengl_accelerate - 3.1 . 5 - cp38 - cp38 - win_amd64.whl
|
安装成功后,去pycharm的设置去查看库,如下所示
这里有个点要注意一下,本人在这里踩了大雷,因为我之前的pycharm使用的是python3.6版本,所以导致我安装完之后,无法使用,但当我下载了3.6版本的时候,发现系统提示我无法安装,应该是因为我有3.8版本,导致我3.6无法正常去安装,所以这里就需要切换到python3.8的对应路径,如何就可以正常使用了。
如下图,找到自己的python3.8文件夹,然后找到里面的python.exe文件,然后将它的路径添加的下图红框中的地方去,就可以成功导入你python3.8的库了,然后在检查自己库中是否存在pyopengl和pyopengl-accelerate
代码测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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()
|
测试结果
旋转的立体水壶
附: “opengl.error.nullfunctionerror: attempt to call an undefined function”解决方案
在windows_64下利用命令:pip install pyopengl 安装python的opengl环境。结果运行示例代码出现以下错误:
opengl.error.nullfunctionerror: attempt to call an undefined function glutinitdisplaymode, check for bool(glutinitdisplaymode) before calling
原因分析
主要是你的windows是64位的,但是使用命令pip install pyopengl 安装后,执行示例默认使用的是pyopengl_32位的,所以出现了以上错误!
解决方案
在windows_64上安装64位的pyopengl 即可,pyopengl_64位下载链接:pyopengl‑3.1.1‑win_amd64.whl
下载与自己python版本合适的,执行命令:pip install xxx.whl 即可正常使用pyopengl环境。
测试环境代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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 )
#参数为b类型而不是string
glutcreatewindow(b "first" )
glutdisplayfunc(drawfunc)
#glutidlefunc(drawfunc)
glutmainloop()
|
总结
到此这篇关于python安装配置opengl环境的文章就介绍到这了,更多相关python安装配置opengl内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_45047071/article/details/114748292