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