Pyglet
1. 개요
Pyglet은 순수 파이썬으로 작성된 크로스 플랫폼 윈도잉 및 멀티미디어 라이브러리이다. 이미지, 비디오, 사운드 파일을 기본적으로 처리하며, libav 및 FFmpeg 라이브러리를 사용하여 기능을 확장할 수 있다. 텍스트 표시 및 서식, 이미지 및 스프라이트 작업, 그래픽, 이벤트 및 파일 시스템 관련 기능을 제공한다. OpenGL 셰이더를 지원하며, 간단한 내장 도형, 배치 렌더링 및 3D 모델 렌더링을 지원한다.
| 유형 | 소프트웨어 라이브러리 |
|---|---|
| 개발자 | Pyglet 사용자 커뮤니티 |
| 관리자 | Pyglet 사용자 커뮤니티 |
| 최신 안정화 버전 | v1.4.8 |
| 최신 릴리스 날짜 | 2019년 11월 21일 |
| 운영체제 | 크로스 플랫폼 |
| 장르 | 라이브러리 |
| 라이선스 | 수정 BSD 라이선스 |
| 웹사이트 | Pyglet 공식 웹사이트 |
2. 기능
Pyglet은 순수 파이썬으로 작성되었으며, 외부 종속성 없이 다양한 형식의 이미지, 비디오, 사운드 파일을 기본적으로 처리할 수 있다. libav나 ffmpeg 라이브러리를 사용하면 기능을 확장할 수 있다.
2.1. 텍스트 표시 및 서식
Pyglet은 다음의 텍스트 표시 및 서식 기능을 제공한다.
* 풍부한 텍스트 서식 (굵게, 기울임꼴, 밑줄, 색상 변경, 배경색, 들여쓰기, 목록)
* 편집 가능한 텍스트를 지원하는 내장 레이아웃
* 캐럿
* HTML 지원
스프라이트, 텍스트 레이아웃 및 텍스트 기능이 구현되어 있다. 다단계 목록이 지원되며 HTML을 사용하여 생성할 수 있다. 표시된 문서의 서로 다른 섹션은 별개의 스타일을 가질 수 있다. 내장 캐럿은 UI 텍스트 입력 캐럿의 많은 기능을 닮은 텍스트 편집을 지원한다.
2.2. 이미지 및 스프라이트 작업
Pyglet은 빠른 이미지 처리 및 렌더링을 지원한다. 내장 스프라이트(pyglet.sprite)를 제공하며, 애니메이션 이미지(*.gif)도 지원한다.
2.3. 그래픽
Pyglet은 OpenGL 셰이더를 지원한다. `pyglet.shapes`를 통해 사각형, 원, 삼각형 등 간단한 내장 도형을 사용할 수 있다. 또한, `pyglet.graphics.Batch`를 이용한 배치 렌더링과 3D 모델 렌더링을 지원한다. 스프라이트, 텍스트 레이아웃 및 텍스트 기능이 구현되어 있으며, HTML을 사용하여 다단계 목록을 생성할 수 있다. 표시된 문서의 서로 다른 섹션은 별개의 스타일을 가질 수 있고, 내장 캐럿은 UI 텍스트 입력 캐럿과 유사한 텍스트 편집 기능을 지원한다.
2.4. 이벤트 및 파일 시스템
Pyglet은 리소스 관리(pyglet.resource), 이벤트 및 시간 처리를 위한 시계(pyglet.clock.Clock), 창 이벤트(pyglet.window.Window), 이벤트 전달(pyglet.event.EventDispatcher)과 컨텍스트 관리를 지원한다.
3.1. 파이썬 코드 예제
python
from pyglet.window import Window
from pyglet.app import run
window = Window(caption="Hello world!", width=640, height=480)
run()
```
이 예제에서 1-2행은 필요한 pyglet 모듈의 구성 요소를 가져온다. 4행은 창을 만들고 6행은 pyglet을 호출하여 이벤트 루프를 실행한다. 선택적으로 업데이트 속도(초당 프레임 수)를 rate 매개변수에서 지정할 수 있다.
```python
import pyglet
window = pyglet.window.Window(width=640, height=480, caption="Hello World!")
pyglet.app.run()
3.2. 코드 설명 (파이썬)
python
from pyglet.window import Window
from pyglet.app import run
window = Window(caption="Hello world!", width=640, height=480)
run()
```
위 예제에서 1-2행은 필요한 pyglet 모듈의 구성 요소를 가져온다. 4행은 창을 만들고 6행은 pyglet을 호출하여 이벤트 루프를 실행한다. 선택적으로 `rate` 매개변수에서 업데이트 속도(초당 프레임 수)를 지정할 수 있다.
```python
import pyglet
window = pyglet.window.Window(width=640, height=480, caption="Hello World!")
pyglet.app.run()