2017-03-06 48 views
1

我正在製作一個低保真,低分辨率(1024x576)的遊戲,我希望能夠通過超取樣(渲染遊戲在2048x1152然後縮小比例)而不是正確的抗鋸齒來逃脫。使用Pygame + PyOpenGL,繪製到Surface而不是直接顯示?

問題是,我沒有看到任何方式將OpenGL命令渲染到內存表面而不是顯示錶面。有沒有辦法?

+0

你看過OpenGL中的framebuffer對象(fbos)嗎?您可以創建一個fbo,附加一個紋理,然後使用該紋理,只要你喜歡。如果你仍然爲此苦苦掙扎,我可以寫一個答案。 – CodeSurgeon

+0

即使像這樣的低分辨率,SSAA也很昂貴。你看過OpenGL包含的默認MSAA嗎?另一種選擇可能是基於着色器的方法,如基本模糊圖像邊緣的FXAA。 – CodeSurgeon

回答

0

不要忘記:顯示對象從表面繼承。所以你可以將屏幕移動到另一個Surface並縮小它!使用相應的模塊創建一個子進程,使用dummy視頻驅動程序初始化Display(如headless_no_windows_needed.py Pygame示例所示),使用PixelArray通過IPC將Surface轉換爲簡單列表,並在主進程中接收它並將其blit沒有OPENGL標誌的顯示器。你也可以使用FBO。

相關問題