2017-03-06 13 views
1

Je suis en train de faire un jeu lo-fi basse résolution (1024x576) et j'espérais pouvoir me contenter de faire du super-échantillonnage (rendre le jeu à 2048x1152 puis redescendre) au lieu de l'anti-aliasing approprié.En utilisant Pygame + PyOpenGL, dessinez sur une Surface au lieu d'aller directement à l'écran?

Problème est, je ne vois aucun moyen de rendre les commandes OpenGL à une surface de mémoire au lieu de la surface d'affichage. Y a-t-il un moyen?

+0

Avez-vous envisagé de travailler avec des objets framebuffer (fbos) dans OpenGL? Vous pouvez créer un fbo, joindre une texture et ensuite utiliser cette texture comme vous le souhaitez. Je peux écrire une réponse si vous avez encore du mal avec ça. – CodeSurgeon

+0

SSAA même à une résolution faible comme ça peut être coûteux. Avez-vous regardé le MSAA par défaut inclus avec OpenGL? Une autre alternative pourrait être une approche basée sur le shader, comme FXAA qui brouille fondamentalement les bords de l'image. – CodeSurgeon

Répondre

0

Ne pas oublier: objets d'affichage héritent des surfaces. Ainsi, vous pouvez masquer l'écran sur une autre surface et réduire l'échelle! Créez un sous-processus en utilisant le module correspondant, initialisez Display avec le pilote vidéo dummy (comme dans l'exemple Pygame headless_no_windows_needed.py), envoyez la Surface convertie en une liste simple en utilisant PixelArray, via IPC, récupérez-la dans le processus principal et blittez-la un affichage sans fanion OPENGL. Vous pouvez également utiliser des FBO.