저는 한동안 OpenGL 라이브러리를 가르치고 있으며 게임을 시작하고 싶습니다. 그러나 더 쉬운 소개를 위해 하향식 포켓몬 스타일 게임과 같은 2D로 시작하고 싶습니다.
이것이 좋은 계획입니까, 아니면 OpenGL이 3D 전용입니까?
저는 한동안 OpenGL 라이브러리를 가르치고 있으며 게임을 시작하고 싶습니다. 그러나 더 쉬운 소개를 위해 하향식 포켓몬 스타일 게임과 같은 2D로 시작하고 싶습니다.
이것이 좋은 계획입니까, 아니면 OpenGL이 3D 전용입니까?
답변:
OpenGL은 2D 게임에 매우 적합합니다. 일반적으로 3D에 사용되지만 2D 게임에도 동일한 기능을 사용할 수 있습니다. 즉, 3D OpenGL로 할 수있는 모든 작업은 "2D"OpenGL에 적용 할 수 있습니다.
추가 정보는 이 위치 에서 찾을 수 있습니다 .
2D OpenGL은 3D OpenGL과 같은 방식으로 달성됩니다. 2D OpenGL은 기술의 적용, 즉 평면을 장면에 렌더링 한 다음 원근 투영 대신 정사영 투영을 사용하여 설정에 따라 장면이 왜곡 될 수 있습니다.
예를 들면 :
(a)는 직교 투영에서의 장면이다. (b) 투시 투영을 사용하는 동일한 장면입니다. 2D 게임에서 스프라이트의 깊이가 변경되면 스프라이트가 잘못 배치 될 수 있습니다 (개발 방법에 따라 다를 수 있음). 투시 투영을 사용하면 화면 좌표에서 정렬하기가 더 어려워집니다.
또한 OpenGL은 많은 이점을 제공합니다. 기본적으로 하드웨어 가속은 큰 장점입니다. 또한 그래픽 카드의 기능과 작동 방식에 대해 훨씬 세밀한 제어가 가능하므로 사례 별 최적화가 가능합니다.
이름으로 OpenGL은 그래픽 라이브러리입니다. 3d를 염두에두고 개발되었지만 라이브러리에는 3d를 사용할 하드 코딩 된 가정이 없습니다. 또한 3D 기능 덕분에 엄격하게 2D 방식으로 수행하기 어려운 몇 가지 일이 사소합니다. 예 :
이것은 내 머리 꼭대기에서 오는 몇 가지 장점 일뿐입니다. 다른 몇 가지가 있다고 생각합니다.
OpenGL은 3D API이지만 2D 게임을 만드는 데 계속 사용할 수 있습니다. 데이터를 평면에 금지하는 등의 다양한 기술을 통해 3D로 2D 환경을 위조 할 수 있습니다.
그러나 실제 API에서는이를 명백한 방식으로 지원하는 데 제한이 있습니다 (예 : "2D 모드 켜기"기능은 없습니다). 시뮬레이션하는 방법 (온라인으로 많은 자습서에서 찾을 수 있음)은 실제로 후드에서 사용되는 3D 파이프 라인에 대한 이해가 없으면 완전히 이해하기 어려울 수 있습니다.
OpenGL을 한동안 살펴본 것처럼 들리므로 아마도 이러한 기본 사항을 알 수있을 것입니다. 그러나 흔들리는 느낌이들 경우 cocos2d 와 같은 OpenGL 위에 빌드 된 2D 라이브러리를 사용하여 게임을 시작할 수 있습니다 . 2D API가 일반적으로 어떻게 보이는지에 대한 경험을 제공하고 하드웨어 가속 3D 백엔드의 이점을 얻을 수 있습니다.
나는 OpenGl 프로그래밍에 많은 경험을 가지고 있으며 그것이 고통 스럽다고 말할 수있다. 과거에 프로그래밍을 시작했을 때 BlitzBasic과 같은 간단한 환경에서 생산성이 높았습니다. 그런 다음 C ++ 및 OpenGl을 배우면서 다음 단계로 넘어 가기 시작했습니다. 그리고 좋은 선생님이나 사람들이 없어도 영구적으로 검은 화면이 나옵니다. 가장 큰 문제는 OpenGl의 상태 지옥입니다. OpenGL의 상태를 변경하기 위해 교환 할 수있는 수많은 스위치가 있습니다. 그리고 일부 스위치는 다른 스위치에 의존합니다. 예를 들어 glGet (GL_TEXTURE_BINDING_2D)은 glGet (GL_ACTIVE_TEXTURE)에 따라 다릅니다. 그리고 어떤 상태가 다른 상태가 가장 좋지 않은지에 따라 문서화됩니다. 텍스처 로딩과 같은 많은 작업은이 상태를 변경해야하며, 이로 인해 종종 이전 상태가 필요한 다른 코드가 손상 될 수 있습니다. 그런 다음 OpenGl이 구현 종속 동작으로 발생하므로 프로그램이 컴퓨터에서 실행되지만 다른 컴퓨터에서는 검은 색으로 표시됩니다. 여기서 당신이 할 수있는 것은 10000 줄의 코드에서 무엇이 잘못되었는지 추측하는 것입니다. 따라서 좌절감을 좋아한다면 OpenGl을 2D로 사용하십시오. 다른 모든 사람들에게 필요하지 않으면하지 마십시오. OpenGl에서 생산성을 얻을 수 있지만 많은 시간과 신경이 필요합니다. 아마 당신이 보내고 싶은 것보다 더 많이. OpenGl에서 생산성을 얻을 수 있지만 많은 시간과 신경이 필요합니다. 아마 당신이 보내고 싶은 것보다 더 많이. OpenGl에서 생산성을 얻을 수 있지만 많은 시간과 신경이 필요합니다. 아마 당신이 보내고 싶은 것보다 더 많이.
Unity3D는 OpenGL을 사용하며 2D 및 2.5D 플랫 포머에 사용합니다. Unity3D는 기본적으로 3D 게임 엔진이지만 2D 및 2.5D 게임에도 사용됩니다. x, y, z 평면을 가질 수 있고 해당 평면의 2 개로 만 이동 또는 회전을 제한하여 본질적으로 3D 세계에서 2D 분위기를 만듭니다.