GLUT에 대한 대안이 있습니까?


12

OpenGL을 배우려고하는데 GLUT가 더 이상 사용되지 않는다는 것을 알았습니다 . 이미 SDL을 알고 있으며 이것이 좋은 대안 인 것 같습니다. SDL을 사용하여 OpenGL로 게임을 개발하거나 더 나은 대안이 있습니까? 저는 게임 개발을 처음 사용하므로 최신 기술에 대해 잘 모릅니다.

답변:


27

방금 GLUT가 더 이상 사용되지 않는다는 것을 알았습니다.

그것은 당신이 처음 접하는 대답을 받아 들일 때 일어나는 일입니다. 나쁜 정보를 얻습니다. GLUT 3.7은 사용해서는 안되지만 FreeGLUT은 이전 버전과 완전히 호환됩니다.

그러나 귀하의 질문은 다른 곳으로갑니다. 실제 게임을 만들기 위해서는 * 형식의 GLUT가 부적절합니다. 메인 루프를 제어 할 수 없으며 게임에서 실제로 필요합니다 (FreeGLUT에는 메인 루프를 제어하는 ​​방법이 있지만 여전히 이상합니다). GLUT는 그래픽 데모를 작성하기위한 것입니다. 새로운 그래픽 효과를 테스트 할 때는 매우 중요하므로 필요할 때 도구 상자에 있어야합니다. 그러나 주 게임 코드는 절대 사용해서는 안됩니다.

GLFW 는 GLUT의 게임 중심 경량 대안입니다. OpenGL 창을 만드는 것 이상으로 기본적인 지원을 제공합니다. 입력을 받고, 이미지를 텍스처로로드하고, 다른 몇 가지를 할 수 있습니다.

SDL , SFMLAllegro 5 는 모두 멀티미디어 툴킷입니다. 그들은의 OpenGL 창을 만들 수 있지만, 그들은 이렇게 많은 더보다. 입력, 오디오 및 게임을 만드는 데 필요한 기타 다양한 것들을 완벽하게 지원합니다. 게임을하고 있다면 이것들 중 좋은 출발점이됩니다. 나는 개인적으로 Allegro 5를 좋아하지만 좋은 문서화와 깨끗한 API에 대한 나의 편견입니다.


1
AAA 타이틀 (PC 전용 및 다중 플랫폼)은 무엇을 사용합니까? 그들은 OpenGL 창을 처리하기 위해 언급 한 (GLFW, Allegro)를 사용합니까? 아니면 처음부터 자신 만의 '모든 것'을 쓰나요?
Quazi Irfan

@iamcreasy : "AAA 타이틀"(이 용어는 정말로 싫어합니다)은이 중 어느 것도 사용하지 않습니다. 일반적으로 오픈 소스는 사용하지 않습니다. 그들은 할 수 있지만 라이브러리를 사용하려는 경우 지원되는 라이브러리를 사용하는 것이 좋습니다. ODL 또는 Bullet과 같은 일부 예외가 있습니다. 그러나 이는 규칙이 아닌 예외입니다.
Nicol Bolas 2012

GLFW는 언제 '이미지를 텍스처로로드'합니까? 확실히 기능 목록에 없습니다. glfw 헤더에서 해당 목적을 원격으로 제공하는 기능도 없습니다.
감속

1
GLUT의 또 다른 단점은 입력 모델이 게임에 특히 적합하지 않다는 것입니다. 원시 키 코드를 얻거나 수정 자 키 자체에서 프레스 / 릴리스 이벤트를 얻는 방법 (예 : ctrl을 발사 버튼으로 사용) 또는 기본 GL 컨텍스트 (X11에서 vsync를 활성화하는 데 필요한)를 얻을 수있는 방법이 없습니다. 예를 들어).
푹신한

1
@NicolBolas 아, 나는 약 2.7을 잊어 버렸습니다. [스레드, 이미지]는 GLFW 3.0 릴리스에서 '컨텍스트 밖'로 선언되었습니다.
감속


2

게임을 개발하는 것이 목표라면

게임을 크로스 플랫폼으로할지 여부에 따라 다릅니다. 휴대용 (Windows, Mac, Linux) 게임의 경우 SDL이 유일한 선택 인 것 같습니다.

Windows 및 / 또는 XBox 만 대상으로하는 경우 훨씬 많은 대안이 있습니다. 예를 들어 XNA를 사용하면 많은 코드를 수동으로 작성하지 않아도 됩니다.

OpenGL을 배우는 것이 목표라면

원시 OpenGL로 프로그래밍하기 만하면 직관적이지 않은 많은 개념, 수학 및 거대한 매뉴얼을 경험할 수 있습니다.


Takumi가 말했듯이 휴대용 라이브러리로는 SFML도 있습니다. SDL imho보다 낫습니다 (최신입니다)
kaoD

8
-1 : "휴대용 (Windows, Mac, Linux) 게임의 경우 SDL이 유일한 선택 인 것 같습니다." 이것은 원격으로는 사실이 아닙니다. SFML과 Allegro 5는 모두 완벽하게 유효한 대안으로 존재하며 플랫폼 기반이 더 넓습니다.
Nicol Bolas

1

GLUT는 라이브러리는 물론 API입니다. 원래 라이브러리는 실제로 사용되지 않습니다. API는 다른 것입니다. 시작하는 것이 좋았습니다. 한계를 극복하고 새로운 요구를 해결하기 위해 수정이 필요합니다. 기본 현재 구현은 FreeGLUT이며 지원되지 않으며 사용되지 않습니다. 이것은 GLUT (라이브러리 GLUT에서와 같이)에 대한 좋은 대안이 GLUT (FreeGLUT에서와 같이)임을 의미합니다.

"주 루프 제어"에서 위에서 언급 한 문제가 올바르지 않습니다. 최신 GLUT 버전을 사용하면 게임 루프를보다 효과적으로 제어 할 수 있습니다 (중요한 경우). 이 제한은 glutMainLoopEvent ()에 의해 수정되었습니다. 이 및 기타 제한 사항은 다음과 같습니다.

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" (즉, 당신에게 중요한 경우) 새로운 GLUT 버전을 사용하면 게임 루프를 더 잘 제어 할 수 있습니다. "그것은 그래서, 게임의 , 당신에게 중요한 것을. 또한 glutMainLoopEvent메인 루프를 관리하는 좋은 방법은 아닙니다. 원하는 때에 원하는 데이터를 얻을 수있는 폴링 모델이 아니라 여전히 데이터를 공급하기 위해 이벤트 중심 모델을 사용합니다.
Nicol Bolas

이벤트에서 저장된 데이터로 폴링하지 않는 한 이벤트 중심 모델이 폴링보다 효율적이라고 주장해야합니다. 폴링 시스템 리소스는 신중하게 수행해야합니다.
Ingemar Ragnemalm

0

Qt는 OpenGL을 지원합니다. Open Inventor를 살펴보고 더 높은 수준의 3D API로 바로 넘어가는 것이 적절한 지 고려하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.