OpenGL筆記(一) | 配置OpenGL--Python的步驟和出現的錯誤

目錄

一、安裝

1、pip安裝(32位系統)

2、本地安裝(32位系統 or 64位系統)

二、錯誤

1、64位系統使用pip安裝的錯誤

2、運行glutInitDisplayMode()函數出錯

三、測試程序

參考鏈接


一、安裝

1、pip安裝(32位系統)

在anaconda prompt下使用:

pip install opengl

這地方別人說使用pip安裝的是32位的庫,我64位的試過這種方法使用時會出錯(在後面講一下出的錯誤) 

2、本地安裝(32位系統 or 64位系統)

1).登錄網站:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl

2).下載對應版本的OpenGL

如圖所示:是3.1.5版本的OpenGL,cp37m表示對應python 3.7版本,amd64表示對應64位系統.。選擇適合自己的版本,然後下載到Anaconda安裝文件見下(隨便一個文件見不知道行不行,我沒試過)

3).安裝OpenGL

在Anaconda Prompt下,進入到上一步下載OpenGL的文件中,使用如下代碼安裝,,其中XXX代表文件名。

pip install XXXX.whl

安裝完成後,可以使用pip list查看所有安裝的庫,也可以運行一個程序進行測試。 

注意:如果使用已經使用pip安裝了32位的庫,需要先卸載掉,使用如下代碼可以卸載掉:

conda remove opengl

二、錯誤

1、64位系統使用pip安裝的錯誤

運行程序時將會找不到 glut,錯誤信息是:

NullFunctionError: Attempt to call an undefined function glutInit, check for bool(glutInit) before calling

有人說這是缺少glut文件,所有網上有很多人手動配置glut,但是我沒有成功。我是採用了1.2中本地安裝的方法弄好的。

手動配置glut的方法見參考鏈接。

2、運行glutInitDisplayMode()函數出錯

在配置好OpenGL之後,我運行了測試程序,結果又出來了新的錯誤信息:

TypeError: super(type, obj): obj must be an instance or subtype of type

這是因爲我使用的pip安裝的OpenCV,所以要先把pip安裝的opencv卸載,然後同1.2安裝opengl一樣進行本地安裝。安裝OpenCV參考鏈接https://blog.csdn.net/snail9610/article/details/106018790

opencv下載鏈接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

三、測試程序

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("First")
glutDisplayFunc(drawFunc)
# glutIdleFunc(drawFunc)
glutMainLoop()

會出來一個壺 。

 

參考鏈接

參考鏈接前三個是如何本地安裝opengl,後面的是pip安裝以及如何配置glut、freeglut

另外提醒一下:配置freeglut是可以使用編譯好的,也可以使用Cmake自己編譯。

編譯好的freeglut:https://www.transmissionzero.co.uk/software/freeglut-devel/

Cmake下載地址:https://cmake.org/download/

  1. https://blog.csdn.net/qq_43485847/article/details/89057706
  2. https://blog.csdn.net/beibiannabian/article/details/77532441
  3. https://cloud.tencent.com/developer/article/1097597
  4. https://www.cnblogs.com/GraceSkyer/p/9235582.html
  5. https://blog.csdn.net/BigBoySunshine/article/details/80218245
  6. https://blog.csdn.net/san1156/article/details/74923025
  7. https://blog.csdn.net/u013232740/article/details/47355927?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2
  8. https://blog.csdn.net/iteye_9364/article/details/82547471?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E9%85%8D%E7%BD%AEfreeglut&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-82547471
  9. https://blog.csdn.net/wpxu08/article/details/87785547?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E9%85%8D%E7%BD%AEfreeglut&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-87785547
  10. https://blog.csdn.net/hust_sheng/article/details/75131997?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158895130119724811807656%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57675%2522%257D&request_id=158895130119724811807656&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-3-75131997&utm_term=python%E9%85%8D%E7%BD%AEfreeglut
  11. https://blog.csdn.net/hust_sheng/article/details/75131997?utm_source=app
  12. https://www.cnblogs.com/SunboyL/articles/3043072.html
  13. https://blog.csdn.net/linian71/article/details/68485494
  14. https://www.cnblogs.com/sea-stream/p/9840986.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章