问题描述
我有一个用 python 编写的程序,它使用 pygame 和 pyopengl。唯一的问题是,我无法使用 pygame.draw 在屏幕上绘制任何内容,这是我将用于与我的程序交互的内容。我想知道有没有一种方法可以使用pygame的系统进行绘制,同时在其后面使用pyopengl进行3D绘制。
解决方法
你不能直接这样做。
但是,您可以使用 pygame.Surface
模块或 pygame.draw
在 pygame.Surface.blit
对象上绘图。使用 pygame.PixelArray
直接访问表面上的像素。使用像素生成 OpenGL Texture 对象。此纹理可在 OpenGL 中使用。
在另一个方向,您可以渲染到 OpenGL Renderbuffer 或 Texture 对象(请参阅 Framebuffers)。使用 glReadPixels
或 glGetTexImage
将纹理加载到 GPU 上,并使用 pygame.Surface
创建一个 pygame.image.frombuffer
。
另见 Does PyGame do 3d?、PyGame and ModernGL library、PyGame and OpenGL 4 或 PyGame and OpenGL immediate mode (Legacy OpenGL)。