2D 게임에 최신 OpenGL을 사용하는 방법은 무엇입니까?


9

3D에 대한 "현대"OpenGL (3.0+) 튜토리얼이 많이 발견되었지만 2D 게임 개발에 사용하는 방법에 대한 정보를 찾을 때 아무것도 찾을 수 없습니다. 2D gamedev에 OpenGL을 사용하려면 어떻게해야합니까?

특히 다음 주제에 대한 답변을 받고 싶습니다.

  • 직교 투영을 위해 다양한 행렬을 어떻게 설정해야합니까?
  • 3D와 마찬가지로 2D 응용 프로그램에서 셰이더가 많이 사용됩니까? 그렇다면 2D 설정의 목적은 무엇입니까?
  • 2D 게임에 필요한 수많은 텍스처를 어떻게 처리해야합니까?

비교적 광범위한 질문에 대해 사과하지만 검색하는 데 오랜 시간을 보냈으며 최신 OpenGL에 적용되는 유용한 정보는 거의 없습니다.

답변:


11
  • 직교 투영을 위해 다양한 행렬을 어떻게 설정해야합니까?

당신의 목표는 2D입니다. 따라서 투영이 필요하지 않습니다. 프로젝션은 3D 세계를 2D 평면으로 압축하는 행위입니다. 모든 정점의 Z 좌표가 기본값이되도록 셰이더를 설정하고 설정 0.0해야합니다.

그래도 X 및 Y 좌표에 스케일 행렬을 사용할 수 있습니다. 그것을 확장하는 것은 너무 -10.010.0됩니다 -1.01.0. 참고로, 매트릭스는 다음과 같습니다.

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • 3D와 마찬가지로 2D 응용 프로그램에서 셰이더가 많이 사용됩니까? 그렇다면 2D 설정의 목적은 무엇입니까?

그들은 할 수있다. 픽셀 당 조명에 여전히 사용할 수있어 오브젝트에 약간의 깊이를줍니다. 텍스처 효과, 물 효과, 이미지 생성에도 사용할 수 있습니다. 심지어 약간의 속임수로 물리 계산에 사용할 수도 있습니다.

그것을 넣는 또 다른 방법은 3D로 사용되는 모든 것입니다. 방금 다르게 적용되었으며 문서화가 잘되어 있지 않습니다. 실제와 같은 효과가 없다면 2D 게임을하는 사람들이 당신의 사건에 영향을 미치지 않을 것입니다.

어쨌든 스프라이트를 렌더링하려면 쉐이더의 기본 사항을 알아야합니다.

  • 2D 게임에 필요한 수많은 텍스처를 어떻게 처리해야합니까?

3D에서와 마찬가지로. 텍스처 오브젝트, PBO 및 텍스처 아틀라스의 뭉치 또는 몇 개. 아마도 몇 가지 구조 / 클래스와 두통이 있습니다. 저는 이것이 "자산 관리"또는 이와 유사한 것으로 생각됩니다.

  • 2D gamedev를 시작하려면 어떻게해야합니까?

아마도 몇 가지 튜토리얼이있을 것입니다. 3D 버전이 더 일반적이기 때문에 OpenGL을 3D로 배우고 배운 것을 2D에 적용한다고 말하고 싶습니다. 3D와 2D는 매우 유사하며 2D는 Z 좌표를 추적하지 않습니다.


5
2D의 경우 여전히 직교 투영과 다른 Z 좌표를 사용하여 Z 버퍼링 을 수행 할 수 있습니다 . 그렇지 않으면 화가 알고리즘을 직접 수행하고 올바른 순서로 그려야합니다.
congusbongus

@congusbongus 실제로, 만약 당신이 투명성으로 고생한다면, 당신은 아마도 화가의 알고리즘을 스스로해야 할 것입니다 ...
Panda Pajama
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.