2014-02-13 2 views
1

DX11에서 스프라이트를 구현하려고하지만 텍스처를 처리하는 방법을 알지 못합니다.여러 스프라이트를 효율적으로 텍스처 처리하는 방법은 무엇입니까?

먼저 다른 텍스처 (아틀라스)를 사용하는 여러 개의 스프라이트가있을 수 있습니다. 하지만 화면에 스프라이트가 얼마나 있는지 모르기 때문에 쉐이더 코드에 Texture2D[x]을 사용할 수 없습니다.

그래서 내가 Texture2DArray을 사용하여 보았습니다. 그렇지만 D3D11Texture2D 개체 자체를 텍스처 배열로 초기화해야합니다. 한 순간에 스프라이트 A, B, C가 화면에 표시 될 수 있고 다음 순간 스프라이트 B, C, D가 화면에 표시되기 때문에 문제가되는 것 같습니다. 그래서 두 개의 D3D11Texture2D 객체를 생성해야합니다. 둘 다 B 텍스처와 C 텍스처가 포함되어 있습니다. 그리고 어쨌든 배열의 텍스쳐는 같은 크기 여야합니다.

그리고 그것은 절대적인 재앙입니다. 그래서 배열에 대해 제가 빠뜨린 부분이 있습니까? 그리고 가장 효율적인 방법으로이를 수행 할 수있는 방법은 무엇입니까? 단일 텍스처를 설정하고 해당 텍스처를 사용하는 모든 스프라이트를 그려야하며 반복해야합니까? 그것은 또한 아주 나쁜 것처럼 보입니다. 사전에

감사합니다!

추신. 나는 이것이 조숙 한 최적화일지도 모르지만 나는 DX에 익숙하지 않고 잘 코드화하는 것을 배우고/라이브러리를 잘 사용한다는 것이 나에게 흥미 롭다. 그래서 나는 나쁜 해결책을 쓰는 것보다 오히려 약간의 시간을 보낼 것입니다.

답변

0

스프라이트를 그릴 때 가장 일반적으로 사용하는 최적화 중 하나는 화면에 동시에 나타나는 스프라이트의 텍스처를 병합하는 것입니다. 그래서 당신은 하나의 그림 그리기 (Drawex Call)로 모든 것을 그릴 수 있습니다.

+0

그래, 그게 내가 함께 할 것 같아. 이 사실에 대한 우아한 해결책은 아닐 것입니다. 적어도 존재한다면 그것을 찾지 못할 것입니다. 감사. –

관련 문제