问题标签 [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.
python - PyOpenGL TypeError:“NoneType”对象不可调用
我正在尝试学习游戏编程的基础知识,pygame
并且pyopengl
为此进行了安装。
我的代码:
当我在命令提示符下运行上述代码时,使用
我收到以下错误。
我不明白为什么我会收到这个错误。我打电话glutinit
的方式不对吗?
我正在使用 Python 2.7.2。
python - 如何在 PyOpenGL 程序中使用 FreeGLUT glutMouseWheelFunc?
我已经从这里为 64 位 Python 3.x 和 Windows 7 安装了PyOpenGL。我能够编写和执行一个使用 glutMouseFunc来监听鼠标按钮点击的 PyOpenGL 程序:
现在,我也想阅读鼠标的滚轮。我之前在 C++ 中使用 FreeGLUT 完成了此操作,它公开了glutMouseWheelFunc。我查了一下,我可以看到freeglut32.vc9.dll和freeglut64.vc9.dll在C:\Program Files\Python32\Lib\site-packages\OpenGL\DLLS
.
我将上面的代码更改为:
这失败并出现此错误:
那么,如何在 PyOpenGL 中使用 FreeGLUT 调用?我做错了什么?
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
我错过了什么?
opengl - PyOpenGL 立方体贴图贴图
我尝试使用 texture_2D 在我的立方体上推送纹理。那没问题。
但是当我使用 TEXTURE_CUBE_MAP 时,纹理是不可见的。只是一个黑色立方体。
有谁能够帮我?
python - Python 2.7 64 位和 PyOpenGL-3.0.1.win32 安装
我是 Python 的新手。我已经在 Win7 64 位机器上安装了 Python 2.7 64 位。现在我想安装 PyOpenGL 但只有 win32 版本可用。当我尝试安装 PyOpenGL 时显示“注册表中未找到 Python 安装”
我现在如何在这里进行表格?
python - 使用 PyInstaller 制作的 pyOpenGL exe 给出属性错误
我正在尝试将 pyOpenGL 示例中的课程 18.py 制作为 exe,但是在编译时会出现此错误:
所有使用 pyOpenGL 的程序(包括我自己的程序)都会发生这种情况,错误是一样的。
是否有任何其他技巧(导入等)可以使用 pyInstaller 制作工作可执行文件(我知道有 py2exe,但我更喜欢 pyInstaller)?
我的 python 版本是 2.7 pyOpenGL 版本:3.0.2a5 pyinstaller 版本:1.5.1
python - 如何在 PyOpenGL 中使用 glBufferData()?
如何在 PyOpenGL python 绑定到 OpenGL 中使用 glBufferData()?
当我运行以下代码时
然后调用 glBufferData() 会导致错误消息
该代码应该在绿色背景上绘制一个红色矩形。
python - 如何使用 PyOpenGL 指定缓冲区偏移量
什么是 PyOpenGL 等价物
如果偏移量为 0,则
有效,但我不知道如何将非零偏移量指定到缓冲区对象中。
python - 从 numpy 数组中动态读取 pyopengl 缓冲区
我正在尝试在 python 中编写一个模块,它将一个 numpy 的颜色数据(rgb)数组绘制到屏幕上。目前我正在使用这样的 3 维颜色数组:
将其绑定到缓冲区并使用 aglVertexAttribArray
将数据广播到瓦片数组(点精灵)(在本例中为 10x10 数组),这适用于静态图像。
但我希望能够更改数组中的数据并让缓冲区反映此更改,而无需从头开始重建它。
目前我已经建立了缓冲区:
其中 buffer_data 是 numpy 数组。我可以传递什么(如果有的话)(也许是一些指向内存的指针?)
python - 使用 GLSL 着色器在 PyOpenGL 中进行多纹理处理
我希望能够在 GLSL 片段着色器中组合两个纹理。我目前正在使用 PyOpenGL,到目前为止我使用着色器所做的一切都运行良好。
当我尝试从片段着色器访问多个纹理时遇到困难,例如,以下着色器显示正确的纹理减去蓝色像素:
但
导致空白屏幕。
我有一种感觉,问题可能在于我如何将纹理制服传递给着色器,但我一生都无法弄清楚为什么第一个纹理有效而第二个无效。以下是完整的程序。