python-3.x - 无法从 OpenGL_accelerate 加载 numpy_formathandler 加速器

标签 python-3.x numpy opengl

我正在学习 Opengl,我遇到了这个问题,但无法解决。 所以这里是我在窗口打开后收到的错误消息,只有背景: 无法从 OpenGL_accelerate 加载 numpy_formathandler 加速器

我的脚本使用一些基本的现代 Opengl 抽象成类,使用 numpy 处理数组中的数据。它只绘制 2 个三角形。

from PyE import App
from PyE.Opengl import VBuff, Shader

from numpy import array, float32
from OpenGL.GL import (
    glClear, glClearColor, glDrawArrays, glUseProgram,glEnableClientState,
    GL_TRIANGLES, GL_COLOR_BUFFER_BIT, GL_FLOAT,GL_VERTEX_ARRAY
)


app = App(1080, 720, "Test Window")

glClearColor(.1,.1,.1,1.)


positions = [ 0.0, 1.0, 0.0,  0.0, 0.0, 0.0,  1.0, 1.0, 0.0,
              0.0, 0.0, 0.0,  1.0, 1.0, 0.0,  1.0, 0.0, 0.0]

positions = array(positions, dtype=float32)

sh = Shader("test.sl")
vb = VBuff(positions, sh)

@app.mainLoop
def Draw():
    glClear(GL_COLOR_BUFFER_BIT)
    vb.bind()
    glUseProgram(sh.prog_id)
    glDrawArrays(GL_TRIANGLES,0,6)
    glUseProgram(0)
    vb.unbind()


if __name__ == "__main__":
    Draw()

有关详细信息,我在使用 python 3.7.6 的 Windows 10 上。 希望有人能帮助我 ;) 祝你有美好的一天。

最佳答案

我发现了。

您需要从 Python 扩展包的非官方 Windows 二进制文件下载并安装包。

您需要选择这些包:

  • numpy (+mkl)
  • 科学
  • PyOpenGL
  • PyOpenGL_accelerate
  • 游戏
  • 自由暴饮暴食(MSVG)

如何找出哪个是正确的? 查看您的 Python 版本,对我来说是 3.8.5 。 在包名称上有一个“cp”,旁边有一个数字。 它对应于Python的版本。 就我而言,我将为 python 3.8x 使用 cp38

numpy-1.19.1+mkl- cp38 - cp38 -win_amd64.whl

下载后,只需使用 pip 安装即可。 (注意安装顺序)。

pip install numpy-1.19.1+mkl-cp38-cp38-win_amd64.whl
pip install scipy-1.5.2-cp38-cp38-win_amd64.whl
pip install PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.5-cp38-cp38-win_amd64.whl
pip install pygame-1.9.6-cp38-cp38-win_amd64.whl

对于 GLUT,将 freeglut.dll 复制到 C:/Windows 目录。

copy freeglut.dll C:\Windows

链接:

Unofficial Windows Binaries for Python Extension Packages

Freeglut Windows Development Libraries

关于python-3.x - 无法从 OpenGL_accelerate 加载 numpy_formathandler 加速器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61495735/

相关文章:

python - 在python中检查3个中的2个变量是否相等

python - 将 static() 添加到 urlpatterns 只能通过附加到列表来工作

python - 使用存储在多个字典中不同键中的字符串填充 python 元组

python - scipy.io.wavfile 给出 "WavFileWarning: chunk not understood"错误

shell - 在 Python 的 IDLE 中扩展 shell 的宽度

java - 如何获取和设置纹理中的像素(LibGDX)

python - 如何一次输入多个浮点变量

如果缺少,Python 将元素添加到列表中的列表

c++ - 使用 QOpenGLTexture 和 QOpenGLFrameBufferObject 的多重纹理

java - 获取三角形中任意点的位置