2016-10-23 2 views
1

어떻게 pygame.SURface() 객체를 pygame.OPENGL 디스플레이에 blit하고 디스플레이를 뒤집을 수 있습니까?pygame.Surface()를 pygame.OPENGL 디스플레이에 blitting

import pygame 

pygame.init() 

RES = (640, 480) 
display = pygame.display.set_mode(RES, pygame.FULLSCREEN | pygame.OPENGL) 

bg_img = pygame.Surface(RES) 
bg_img.fill((255, 255, 255)) 

display.blit(bg_img, (0, 0)) 
pygame.quit() 
sys.exit() 

나에게 당신은 할 수 없습니다

Traceback (most recent call last): 
    File "C:/Game Dev/TESTS/Clock Comparison/opengl_test.py", line 12, in <module> 
    display.blit(bg_img, (0, 0)) 
error: Cannot blit to OPENGL Surfaces (OPENGLBLIT is ok) 
+0

정상적인 블리 팅 및 뒤집기 방법이 효과가 없을 것으로 예상되는 이유가 있습니까? 효율성을 염두에두고 있다면'surface.convert' 또는'surface.convert_alpha'를 호출하면 속성이 향상 될 수 있습니다 (인자 표면이 표시면과 동일한 픽셀 포맷을 가짐). – Blckknght

+0

도움을 주셔서 감사합니다! (_edited question_) - 그래서. –

+0

(convert()/convert_alpha()로 문제가 해결되지 않음) –

답변

1

을 제공합니다. 오류를 방지하기 위해 는, 디스플레이 표면이 같은 코드를 실행 한 후 대신 pygame.OPENGL 플래그의 pygame.OPENGLBLIT 플래그, 그러나를 사용할 필요가 :

import pygame 
import sys 

pygame.init() 

RES = (640, 480) 
display = pygame.display.set_mode(RES, pygame.OPENGLBLIT) 

bg_img = pygame.Surface(RES). 
bg_img.fill((255, 255, 255)) 

display.blit(bg_img, (0, 0)) 
pygame.display.flip() 
input() 
pygame.quit() 
sys.exit() 

디스플레이 창은 남아있다.

파이 게임 문서 목록으로이 플래그 :

컨텍스트/ 렌더링는 OpenGL을 만들고 블리 팅을 위해 사용합니다. 폐기 됨.

pyOpenGL 자체에서 시도한 모든 작업을 수행 할 방법을 찾아야합니다.

관련 문제