问题标签 [pyopengl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
9872 浏览

python - PyOpenGL TypeError:“NoneType”对象不可调用

我正在尝试学习游戏编程的基础知识,pygame并且pyopengl为此进行了安装。

我的代码:

当我在命令提示符下运行上述代码时,使用

我收到以下错误。

我不明白为什么我会收到这个错误。我打电话glutinit的方式不对吗?

我正在使用 Python 2.7.2。

0 投票
1 回答
2084 浏览

python - 如何在 PyOpenGL 程序中使用 FreeGLUT glutMouseWheelFunc?

我已经从这里为 64 位 Python 3.x 和 Windows 7 安装了PyOpenGL。我能够编写和执行一个使用 glutMouseFunc监听鼠标按钮点击的 PyOpenGL 程序:

现在,我也想阅读鼠标的滚轮。我之前在 C++ 中使用 FreeGLUT 完成了此操作,它公开了glutMouseWheelFunc。我查了一下,我可以看到freeglut32.vc9.dllfreeglut64.vc9.dllC:\Program Files\Python32\Lib\site-packages\OpenGL\DLLS.

我将上面的代码更改为:

这失败并出现此错误:

那么,如何在 PyOpenGL 中使用 FreeGLUT 调用?我做错了什么?

0 投票
1 回答
2351 浏览

opengl - 如何将纹理复制到 PyOpenGL 中的 pbo 中?

在愉快地使用 PyOpenGL 一段时间后,我现在严重卡住了。我正在开发一个 Python 包,它允许我使用 GLSL 着色器和 OpenCL 程序进行图像处理,使用纹理作为将我的数据进出 GLSL 着色器和 OpenCL 程序的标准化方式。

一切正常,除了我无法成功将纹理复制到 pbo(像素缓冲区对象)中。我正在使用 pbo 将我的纹理数据输入/输出 OpenCL,这在 PyOpenCL 中运行良好且快速:我可以将我的 OpenCL 输出从它的 pbo 复制到纹理并显示它,我还可以将数据从 cpu 加载到一个公益组织。但是我绝望地试图用 GPU 上已经存在的纹理数据填充我的 pbo,这是我需要做的才能将 GLSL 着色器生成的图像加载到 OpenCL 中以进行进一步处理。

我已经阅读了两种方法:变体 1 绑定 pbo,绑定纹理并使用 glGetTexImage() 变体 2 将纹理附加到帧缓冲区对象,绑定 fbo 和 pbo 并使用 glReadPixels()

我还读到 glReadPixels() 和 glGetTexImage() 的 PyOpenGL 版本在绑定 pbo 时应该使用的“空”指针有问题,因此我使用的是 OpenGL.raw.GL 变体。

但在这两种情况下,我都会收到“无效操作”错误,我真的看不出我做错了什么。下面是我的pixelbuffer Python类的load_texture()方法的两个版本,我希望我没有把它们剥离得太远......

变体1:

变体 2:

编辑(添加一些关于我的 pbo 的错误和初始化的信息):

我得到的变体 1 的错误是:

我正在像这样初始化我的 pbo:

'self.arraytype' 是 GL_ARRAY_BUFFER, self.usage 我已经尝试了所有可能性以防万一,但 GL_STREAM_READ 似乎最适合我的使用类型。我通常使用的大小是 1024 x 1024,4 个平面,每个平面 1 个字节,因为它是无符号整数。这在从主机传输像素数据时效果很好。

我也在 Kubuntu 11.10 上,使用 NVIDIA GeForce GTX 580,GPU 上有 3Gb 内存,使用专有驱动程序,版本 295.33

我错过了什么?

0 投票
1 回答
981 浏览

opengl - PyOpenGL 立方体贴图贴图

我尝试使用 texture_2D 在我的立方体上推送纹理。那没问题。

但是当我使用 TEXTURE_CUBE_MAP 时,纹理是不可见的。只是一个黑色立方体。

有谁能够帮我?

0 投票
2 回答
5346 浏览

python - Python 2.7 64 位和 PyOpenGL-3.0.1.win32 安装

我是 Python 的新手。我已经在 Win7 64 位机器上安装了 Python 2.7 64 位。现在我想安装 PyOpenGL 但只有 win32 版本可用。当我尝试安装 PyOpenGL 时显示“注册表中未找到 Python 安装”

我现在如何在这里进行表格?

0 投票
1 回答
1330 浏览

python - 使用 PyInstaller 制作的 pyOpenGL exe 给出属性错误

我正在尝试将 pyOpenGL 示例中的课程 18.py 制作为 exe,但是在编译时会出现此错误:

所有使用 pyOpenGL 的程序(包括我自己的程序)都会发生这种情况,错误是一样的。

是否有任何其他技巧(导入等)可以使用 pyInstaller 制作工作可执行文件(我知道有 py2exe,但我更喜欢 pyInstaller)?

我的 python 版本是 2.7 pyOpenGL 版本:3.0.2a5 pyinstaller 版本:1.5.1

0 投票
2 回答
6299 浏览

python - 如何在 PyOpenGL 中使用 glBufferData()?

如何在 PyOpenGL python 绑定到 OpenGL 中使用 glBufferData()?

当我运行以下代码时

然后调用 glBufferData() 会导致错误消息

该代码应该在绿色背景上绘制一个红色矩形。

0 投票
2 回答
1851 浏览

python - 如何使用 PyOpenGL 指定缓冲区偏移量

什么是 PyOpenGL 等价物

如果偏移量为 0,则

有效,但我不知道如何将非零偏移量指定到缓冲区对象中。

0 投票
2 回答
1454 浏览

python - 从 numpy 数组中动态读取 pyopengl 缓冲区

我正在尝试在 python 中编写一个模块,它将一个 numpy 的颜色数据(rgb)数组绘制到屏幕上。目前我正在使用这样的 3 维颜色数组:

将其绑定到缓冲区并使用 aglVertexAttribArray将数据广播到瓦片数组(点精灵)(在本例中为 10x10 数组),这适用于静态图像。

但我希望能够更改数组中的数据并让缓冲区反映此更改,而无需从头开始重建它。

目前我已经建立了缓冲区:

其中 buffer_data 是 numpy 数组。我可以传递什么(如果有的话)(也许是一些指向内存的指针?)

0 投票
1 回答
3381 浏览

python - 使用 GLSL 着色器在 PyOpenGL 中进行多纹理处理

我希望能够在 GLSL 片段着色器中组合两个纹理。我目前正在使用 PyOpenGL,到目前为止我使用着色器所做的一切都运行良好。

当我尝试从片段着色器访问多个纹理时遇到困难,例如,以下着色器显示正确的纹理减去蓝色像素:

导致空白屏幕。

我有一种感觉,问题可能在于我如何将纹理制服传递给着色器,但我一生都无法弄清楚为什么第一个纹理有效而第二个无效。以下是完整的程序。