2013-07-12 5 views
0

OpenGL ES 2.0을 사용하여 나만의 단순한 렌더러를 만들었습니다. 기본적으로 주어진 스프라이트 텍스처에 따라 사각형을 렌더링하는 클래스입니다. 좀 더 자세히 설명하자면, 실제로 쿼드를 나타내는 객체를 받아들이는 단일 객체 일뿐입니다. 각 쿼드 객체는 세계 변환 및 객체 변환 행렬을 유지하고 주어진 프레임 수에 걸쳐 변환하는 메소드를 제공하고 스프라이트에 텍스처 오프셋을 지정합니다. 또한이 쿼드 클래스는 해당 행렬에서 실행할 변환 연산 목록을 유지 관리합니다. 그런 다음 렌더러 클래스는 쿼드에서 이러한 모든 속성을 읽고 렌더 목록에 모든 쿼드를 그리는 VBO를 설정합니다. 예를 들어순전히 애호가 렌더링 엔진 작성에 대한 제안 요청

: 구현 관점에서

Quad q1 = new Quad(); 
Quad q2 = new Quad(); 

q1->translate(vector3(.1, .3, 0), 30); // Move the quad to the right and up for 30 frames. 
q2->translate(vector3(-.1, -.3, 0), 30); // Move the quad down and to the left for 30 frames. 

Renderer renderer; 
renderer.addQuads({q1, q2}); 
It's more complex than this, but you get the simple idea. 

각 프레임에, 그것은, 지시에 따라, 각 오브젝트의베이스 정점을 변환 알파 값에 대한 정보를 포함하는 VBO에 모두로드 한에 전달 한 번에 모든 쿼드를 그리는 셰이더 프로그램.

이것은 분명히 렌더링 엔진이라고 부르는 것이 아니라 3D 지오메트리 대신 2D 쿼드를 렌더링하는 것과 유사한 작업을 수행합니다. 나는 임시 변통 렌더링 엔진을 개발할 권리가 있는지 궁금해. 나는 대부분의 경우에 그것들을 이해하기 시작하기 위해 기존의 렌더링 엔진을 사용하는 것이 대단한 데 동의하지만, 내 관점에서 볼 때, 미리 구축 된 것을 배우는 것과는 대조적으로 사물이 어떻게 구현되는지에 대해 이해하고 싶어한다. 그것이 어떻게 작동하는지 배우기.

답변

0

이 방법의 문제점은 새로운 지오메트리, 텍스처 또는 애니메이션을 추가하려면 코드를 작성해야한다는 것입니다. 완전히 상호 작용하는 3DS, Maya 또는 Blender와 같은 기존 도구를 사용하여 게임 엔진 용 컨텐츠를 작성할 수 있어야합니다. 이를 위해서는 Collada와 같은 표준 파일 형식을 읽고 구문 분석해야합니다. 코드를 직접 구현하여 배우고 싶은 욕망을 떨쳐 버리고 싶지는 않지만, 게임 엔진을 만드는 데 중요한 부분을 많이 제공하는 PowerVR SDK를 실제로 살펴 봐야합니다. 소스 코드가 제공되며 무료입니다.

+0

답변 해 주셔서 감사합니다. 이 시점에서, 나는 일들이 근본적인 수준에서 어떻게 작용하는지에 더 흥미를 느낀다. 그래서 나는 스스로 혼자서 뭔가를하고 싶다. 내 관심사는 학교에서 할 일과 관련된 단순한 모델 렌더링 엔진을 만드는 것만 큼 게임을 만드는 것이 아닙니다. Assimp를 사용하여 OBJ 모델을로드하고 간단한 렌더러를 만들고 키보드와 마우스로 모델을 이동하려는 단순한 자산 로더를 작성하기 시작했습니다. –