[PYTHON] Essayez PyOpenGL

Essayez OpenGL avec Python sur Windows moderne.

environnement

J'ai travaillé sur Windows 10 (64 bits).

Python est

https://www.continuum.io/downloads

Sélectionnez Python 3.5 (64 bits) dans la distribution Anaconda distribuée dans. Dans Anaconda, numpy etc. sont inclus depuis le début, donc c'est bon pour Windows.

Installez PyOpenGL

Au début, j'ai sifflé comme ci-dessous,

> C:\Anaconda3\Scripts\pip.exe install PyOpenGL PyOpenGL-Demo

La distribution Anaconda semble faire cela.

> C:\Anaconda3\Scripts\conda.exe install pyopengl

Opération confirmée avec PyOpenGL-Demo

Téléchargez l'archive et décompressez-la.

> cd PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo
PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo> dir

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2016/03/19      2:27                da
d-----       2016/03/19      2:27                dek
d-----       2016/03/19      2:27                GLE
d-----       2016/03/19      2:27                GLUT
d-----       2016/03/19      2:27                NeHe
d-----       2016/03/19      2:27                proesch
d-----       2016/03/19      2:27                redbook
d-----       2016/03/19      2:27                tom
-a----       2008/12/08     12:25              0 readme.txt
-a----       2008/12/08     12:25              0 __init__.py

Allons à NeHe.

PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo> cd NeHe
PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe> C:\Anaconda3\python.exe .\lesson1.py
  File ".\lesson1.py", line 141
    print "Hit ESC key to quit."
                               ^
SyntaxError: Missing parentheses in call to 'print'

Oh, spécifications python2. Mais,

PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe> C:\Anaconda3\Scripts\2to3.exe -w .
PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe> C:\Anaconda3\python.exe .\lesson1.py
Traceback (most recent call last):
  File ".\lesson1.py", line 8, in <module>
    __version__ = string.split('$Revision: 1.1.1.1 $')[1]
AttributeError: module 'string' has no attribute 'split'

Commenter

#__version__ = string.split('$Revision: 1.1.1.1 $')[1]
#__date__ = string.join(string.split('$Date: 2007/02/15 19:25:19 $')[1:3], ' ')
#__author__ = 'Tarn Weisner Burton <[email protected]>'

encore.

PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe> C:\Anaconda3\python.exe .\lesson1.py
Hit ESC key to quit.
Traceback (most recent call last):
  File ".\lesson1.py", line 142, in <module>
    main()
  File ".\lesson1.py", line 97, in main
    glutInit(sys.argv)
  File "C:\Anaconda3\lib\site-packages\OpenGL\GLUT\special.py", line 333, in glutInit
    _base_glutInit( ctypes.byref(count), holder )
  File "C:\Anaconda3\lib\site-packages\OpenGL\platform\baseplatform.py", line 407, in __call__
    self.__name__, self.__name__,
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInit, check for bool(glutInit) before calling

Il n'y a pas de surabondance.

Ajoutez Glut.

https://charmie11.wordpress.com/2015/09/28/pyopengl-installation-using-anaconda/

Je vois.

http://ktm11.eng.shizuoka.ac.jp/lesson/modeling.html J'ai obtenu glut32.dll (64 bits) et l'ai copié dans C: \ Windows \ System32.

L'erreur reste la même. J'ai suivi le code.

# C:\Anaconda3\Lib\site-packages\OpenGL\platform\win32.py
  def GLUT( self ):
        for possible in ('freeglut%s'%(size,),'freeglut', 'glut%s'%(size,)):
            # Prefer FreeGLUT if the user has installed it, fallback to the included 
            # GLUT if it is installed
            try:
                return ctypesloader.loadLibrary(
                    ctypes.windll, possible, mode = ctypes.RTLD_GLOBAL
                )
            except WindowsError as err:
                pass
        return None

Je cherche une dll, mais je cherche glut64. Je l'ai mis dans C: \ Windows \ System32 \ glut64.dll. encore.

PyOpenGL-Demo-3.0.1b1\PyOpenGL-Demo\Nehe> C:\Anaconda3\python.exe .\lesson1.py
Hit ESC key to quit.
Traceback (most recent call last):
  File ".\lesson1.py", line 142, in <module>
    main()
  File ".\lesson1.py", line 115, in main
    window = glutCreateWindow("Jeff Molofee's GL Code Tutorial ... NeHe '99")
  File "C:\Anaconda3\lib\site-packages\OpenGL\GLUT\special.py", line 73, in glutCreateWindow
    return __glutCreateWindowWithExit(title, _exitfunc)
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type

L'erreur a changé.

Passez la chaîne Unicode Python3 à glutCreateWindow

115


window = glutCreateWindow(b"Jeff Molofee's GL Code Tutorial ... NeHe '99")

Ajoutez b pour créer une chaîne d'octets. J'ai réussi. Une fenêtre noire est sortie.

Il y avait un échantillon de théière, donc ss. teapots.png

La retouche est la même que NeHe. Cette méthode est également possible.

glutCreateWindow(sys.argv[0].encode('ascii'))

C'était PyOpenGL après une longue période, mais l'environnement a été créé pour le moment. La prochaine fois, je maintiendrai mon glglue (hostile et je ne sais pas comment l'utiliser) pour python3, puis la procédure pour Shader et VertexBuffer. J'ai l'intention de vérifier.

Recommended Posts

Essayez PyOpenGL
Essayez Python
essayez pysdl2
Essayez de toucher libtaxii
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez le générateur de numpy.random
Essayez Distributed Tensor Flow
Essayez d'utiliser Cookiecutter
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Python> essayez: / sauf:
Essayez d'installer Polynote
Essayez d'utiliser pandas.DataFrame
Essayez les astuces de saisie
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'installer chainer-gogh
Essayez d'exécuter deepdream
Essayez d'utiliser PyODE
Essayez d'exécuter Pyston 0.1
Essayez de construire PySide2