2012-02-20 3 views
0

현재 주요 재 작성을 진행할 게임 엔진을 작성 중입니다. 먼저, 엔진과 함께 사용할 라이브러리를 고려 중입니다. 분명히 여기에서 OpenGL을 사용하고 있으며 이전 버전과 호환 될 수 있도록 할 수 있도록 할 것입니다.FreeGlut과 SDL의 조합 사용

그러나 대부분의 연구에서 SDL과 같은 훌륭한 라이브러리를 발견했습니다 (1.3은 제외하고 안정적이라고 생각하지 않습니다. 내가 잘못 생각할 수도 있습니다). 4.2가 아닌 OpenGL 3을 지원합니다. 그러나 FreeGlut은 최신의 최고의 엔진을 지원하며 엔진의 기본에 대한 좋은 방법 인 것 같습니다.

하지만 키보드 입출력 및 사운드 입력 오디오 같은 것들을 다른 것들과 함께 설정하는 것이 유일한 방법입니다. 따라서 glut을 사용하여 OpenGL을 초기화하고 OpenGL을 사용하고 SDL이 키보드 I/O, 사운드 등과 함께 창 관리를 수행 할 수 있는지 여부를 고려하고 있습니다.

물론, OpenGL과 함께 Qt를 사용하는 옵션은 항상 있지만 Qt 및 OpenGL에서 입니다. 가능한 경우 주 루프를 확실히 제어하고 싶습니다.

나는 SFML에 대해서도 들어 봤지만 궁극적으로는 원시 라이브러리의 대부분을 처리하기 위해 C 라이브러리를 작성할 계획이므로 C로 작성된 라이브러리를 사용하고 싶습니다 (순수한 속도 절차 적으로 메모리 관리).

따라서 여기서는 무엇을 해야할지 모르겠다. Qt는 이것에 대한 좋은 선택입니까, 아니면 메인 루프 제어 (SDL과 같은)를 허용하고 내가 필요한 사용자 정의를 제공하는 또 다른 C와 유사한 대안 (예 : FreeGlut)이 있습니까? ? 내가 생각하지 않는, 안정 이것에 대해 잘못 될 수있다 -

+0

나는이 라이브러리들 중 어떤 것도 OpenGL에서 문맥을 만드는 것을 넘어서서 아무것도하지 않는다고 생각한다. 그래서 (누군가 틀렸다면 누군가 저를 정정합니다) 그들은 모두 OpenGL 4.2를 사용할 것입니다. – Thomas

+0

또한 C++을 사용하지 않으려면 왜 사용하지 않습니까? 성능이 중요한 섹션은 원하는 경우 C와 유사한 스타일로 작성할 수 있습니다. – Thomas

+0

주로 Malloc과 Free 같은 것들을 C++에서는 사용하지 않기 때문에 C++보다 실제로 선호하는 것들이 C에 있습니다. C는 포인터와 함께 훌륭하게 작동하며 C++에서도 동일하게 적용됩니다. 그러나 약간의 차이점을 고려해야합니다. 예를 들어 많은 C 스타일 문자열과 구문 분석을 사용할 계획입니다. 또한 OO 스타일의 오버 헤드없이 테스트하는 것이 더 쉽습니다. – zeboidlund

답변

3

주요 문제는,하지만 내 연구의 대부분에서, 나는 1.3을 제외하고 SDL 같은 훌륭한 라이브러리 (것으로 나타났습니다된다) OpenGL 3에서만 지원되며 4.2에서는 지원되지 않습니다. 그러나 FreeGlut은 최신의 최고의 엔진을 지원하며 엔진의 기본에 대한 좋은 방법 인 것 같습니다.

연구가 부족합니다.

첫 번째로, FreeGLUT은 이 아니어야합니다. "엔진"이라고 부르는 것에는을 사용하지 마십시오. 무슨 뜻인지에 상관없이 FreeGLUT은 그 일에 필요한 도구가 아닙니다. 데모를 제작하기 위해 설계되었으므로 메인 루프를 소유하게됩니다. FreeGLUT에는 주 루프를 제어 할 수있는 방법이 있지만 FreeGLUT을 사용하는 표준 방법은 그렇게하지 않는다는 것을 알고 있습니다.

두 번째로, SDL 1.2가 OpenGL 3.2+ core context을 만들 수 없다는 것이 맞습니다. 그러나 GL 3.2+를 사용하기 위해 핵심 컨텍스트를 만들 필요는 없습니다. 호환성 문맥은 그 버전에서 잘 작동합니다. 호환성 문맥이없는 유일한 플랫폼은 MacOSX의 3.2 지원입니다. 그래서 나는 그것에 대해 걱정하지 않을 것입니다.

GLFW을 시도해 볼 수 있습니다. 그것은 일종의 게임 중심의 FreeGLUT과 같습니다. 렌더 루프 등을 제어 할 수 있습니다. FreeGLUT보다 더 나은 입력 처리뿐만 아니라 일부 밝은 이미지로드 기능 (TGA 파일 만)을 제공합니다. 심지어 스레딩 API를 가지고 있습니다. (C++ 11과 C11 둘 다 네이티브 스레드 API를 가지고 있기 때문에 GLFW 2.0은 이들 함수를 사용하지 않는 것이 좋습니다.)

그러나 오디오 용 시스템은 없습니다.

나는 SFML에 대해서도 들어 봤지만 궁극적으로 나는 C 라이브러리를 써서 원시 렌더링의 대부분을 돌볼 계획이다. 순수 속도 및 메모리 관리, 절차 적으로).

저는 "순수한 속도와 메모리 관리"가없는 C++의 오류를 무시할 것입니다. 그것은 무시할 수있는 공통된 단점입니다. 중요한 점은 다음과 같습니다. 렌더링 코드와 관련하여 SFML은 창을 만들고 관리하기 위해서만 존재합니다. 렌더링 코드는 말할 필요가 없습니다. 몇 가지 SFML 함수를 호출하고 SFML 객체 몇 개를 만들고 "C 라이브러리"OpenGL 코드는 그 C++ 객체가 있다는 것을 알 필요조차 없습니다.

그러나 C++을 전혀 사용할 수 없다면 언제든지 Allegro version 5을 사용할 수 있습니다. C API를 가지고 있으며, OpenGL 코어 컨텍스트, 입력, 오디오 및 SFML의 대부분을 지원합니다. 꽤 괜찮은 문서를 가지고 있으며 모듈화되어 있습니다 (SFML과는 다른 방식 임).

+0

SFML에 컨텍스트 생성 기능이 있습니까? 편집 : 신경 쓰지 마라. :) http://sfml-dev.org/documentation/2.0/structsf_1_1ContextSettings.php – zeboidlund