OpenGL에서 2D 배치 렌더러를 XNA/MonoGame 인터페이스에서 영감을 얻었지만 작은 디자인 문제로 인해 입력을 찾고 있습니다. 현재는 네 일반적인 방법으로 정점 데이터를 제출할 수 있습니다 : 다른 세 임의의 수를 (스프라이트와 모양이 독특한 변환을)를 포함 할 수있는 반면OpenGL 일괄 렌더러에서 임의의 버텍스 데이터 일괄 처리
는void Render(const Sprite& sprite);
void Render(const Shape& shape);
void Render(const Vertex* vertices, unsigned int length);
void Render(const Vertex* vertices, unsigned int length, const Texture* texture);
스프라이트는 네 개의 정점, 색상 및 질감 좌표를 포함하고 있습니다. 모든 것은 질감 또는 비 질감 일 수 있습니다. 상태 변경 횟수와 OpenGL 그리기 호출 수를 줄이기 위해 모든 것을 배치하고 싶습니다. 대부분의 제출물이 꼭지점을 공유하여 glDrawArrays 대신 glDrawElements를 사용할 수 있다고 가정하는 것이 합리적이라고 생각하지만 위에서 설명한 내용을 적절하게 일괄 처리하는 방법을 파악하는 데 어려움이 있습니다.
XNA/MonoGame 스프라이트 정육점은 질감이있는 사각형/삼각형 및 임의의 모양이 아닌 모든 도구로만 작동하기 때문에 작동합니다. 또는 SFML 렌더러와 같이 할 수 있고 드로어 블 객체 각각에 대해 드로 콜을 발행 할 수 있지만 일괄 렌더링의 목적에 어긋납니다.
내 렌더러가 "모든 것을 해보려는 것"은 내가 피하고 싶은 느낌인데, 보통 내 경험으로 보면 너무 복잡해지기 때문에 기분이 좋습니다.
내가 묻는 것은 렌더러를 어떻게 다시 디자인 할 수 있습니까? 여러 제출물에 대해 개별 배치 목록을 보관할 수 있습니까? 렌더러를 어떻게 든 모듈화 할 수 있을까요? XNA/MonoGame 에서처럼 질감이있는 객체 만 허용해야합니까?
매우 견고한 정보입니다. 감사합니다. 실제로 총 3 개의 렌더러를 만들었지 만 (교육용으로 여러 버전 지원) 통찰력은 내가 볼 수있는 한 잘 번역됩니다. 내 버텍스는 같은 형식을 가지고 있습니다. 믹스 기능을 사용할 때 0과 1의 값, 전체 텍스처 색상 또는 전체 정점 색상 만 보간 할 것입니다. 맞습니까? 변환은 사용자가 제안한 것과 똑같이 처리됩니다. 또한 배치 렌더링 전에 언 텍스쳐 된 오브젝트를 배치에 복사하는 것을 고려했습니다. 나는 gDebugger에 대해 몰랐다. 링크를 가져 주셔서 감사합니다! – NordCoder