https://www.youtube.com/watch?v=LCK1qdp_HhQ&t=94s
설정
원하는 폴더에 game.py를 만들고 아래의 두개를 설치한다.
- pip install pygame
- pip install PyOpenGL PyOpenGL_accelerate
코드
전체코드
import pygame as pg
from OpenGL.GL import *
class App:
def __init__(self):
#initialize Python
pg.init()
pg.display.set_mode((640,480), pg.OPENGL|pg.DOUBLEBUF)
self.clock = pg.time.Clock()
#initialize opengl
glClearColor(0.1, 0.2, 0.2, 1) #RGBA
self.mainLoop()
def mainLoop(self):
running = True
while(running):
#check events
for event in pg.event.get():
if(event.type ==pg.QUIT):
running = False
# refresh screen
glClear(GL_COLOR_BUFFER_BIT)
pg.display.flip()
#timing
self.clock.tick(60)
self.quit()
def quit(self):
pg.quit()
if __name__ == "__main__":
myApp = App()
코드설명
PyGame 및 PyOpenGL 패키지를 가져온다.
import pygame as pg
from OpenGL.GL import *
초기화, 실행, 종료가 있는 새로운 app클래스를 만든다
class App:
PyGame을 초기화하고 새 화면을 만들려면 pygame.display.set_mode() 함수를 사용한다. 이후 pg.OPENGL로 OPENGL 플래그를 전달하고 이중 버퍼링 시스템을 사용한다. 이중 버퍼링 시스템은 화면을 렌더링하는 데 두 개의 버퍼를 사용 것이고, 한 버퍼는 그리기를 수행하는 동안 다른 버퍼는 표시된다.
def __init__(self):
#initialize Python
pg.init()
pg.display.set_mode((640,480), pg.OPENGL|pg.DOUBLEBUF)
self.clock = pg.time.Clock()
#initialize opengl
glClearColor(0.1, 0.2, 0.2, 1) #RGBA
self.mainLoop()
무한히 실행되는 메인 루프 함수를 만들어 루프 내에서 코드가 실행이 되는지 이벤트를 확인하고, 색상 버퍼를 지우고, 화면을 업데이트하고, 시간 hz를 입력한다.
또한 색상버퍼를 보면 이진 산술이다. OpenGL이 색상 및 기타 데이터를 이진 형식으로 사용하기 때문에 OpenGL 프로그래밍에서 이진 산술이 많이 사용된다.
def mainLoop(self):
running = True
while(running):
#check events
for event in pg.event.get():
if(event.type ==pg.QUIT):
running = False
# refresh screen
glClear(GL_COLOR_BUFFER_BIT)
pg.display.flip()
#timing
self.clock.tick(60)
self.quit()
할당된 메모리를 해제하는 quit() 함수 설정한다.
def quit(self):
pg.quit()
결과
glClearColor(0.1, 0.2, 0.2, 1)의 값을 조정하면 RGBA에따라 화면 색상이 달라진다.
'그래픽스' 카테고리의 다른 글
OpenGL with Python 2: Drawing a Triangle (2) | 2023.10.10 |
---|