我目前正在尝试使用python模仿用GLSL编写的着色器。我首先在GLSL中编写一个着色器,然后使用PyOpenGL对其进行渲染,然后使用python编写相同的算法,并使用numpy和Pillow对其进行渲染。我想编写可以更改着色器输入参数并比较其图像输出的测试。
我当前用于将OpenGL渲染为纹理的解决方案是打开一个QOpenGLWidget
窗口,将其命名为Program
,然后渲染为FrameBuffer
。现在,如果我只想渲染一个图像,这很好用。由于某种原因,Program
不能在多个渲染实例中使用,因此我必须重新创建Program
,并为每个测试打开一个新窗口。这很慢,我需要编写一些额外的代码。
我想知道是否有更简单的方法可以将GLSL着色器渲染为纹理,或者是否可以通过某种方式重建Window使其保持打开状态并为我提供TextureBuffer
。我尝试了最后一个解决方案,但是使用GLSL打开窗口将阻止任何代码进度,直到将其关闭为止:/。
谢谢!