2013-10-29 2 views
0

텍스처로 얼마나 많은 비디오 메모리 또는 메모리 비용을 계산하는지 알고 싶습니다. 예를 들어, TGA 또는 DDS 또는 PNG 또는 JPEG에 의한 비디오 메모리 비용. 동일합니까?텍스처로 얼마나 많은 비디오 메모리 또는 메모리 비용을 계산하는지 알아보기

동일한 경우 PVRTC가 IOS에서 PNG보다 적은 비디오 메모리를 사용하는 이유는 무엇입니까?

저는 이것이 책을 채울 수있는 큰 주제라는 것을 알고 있습니다. 따라서 간단한 소개 후 누구나이 주제에 대한 참고 자료를 줄 수 있습니다. 미리 감사드립니다.

답변

2

TGA 또는 DDS 또는 PNG 또는 JPEG. 동일합니까?

파일 형식의 그. 파일 형식은 비디오 메모리의 텍스처 형식과 관련이 거의 없습니다.

TGA, PNG 및 JPEG는 일반적인 파일 형식입니다. 게임이 파일을 읽을 때 파일을 압축 해제하고 내부 표현으로 변환합니다. 이러한 형식에서 png는 무손실 압축을 제공하고 jpeg는 손실 압축을 제공하며 tga는 일반적으로 압축되지 않습니다. 나는 png와 tga만이 투명성을지지한다고 생각한다.

DDS는 DirectX에서 지원하는 텍스처 형식 중 하나에 데이터를 저장하기 때문에 다소 DirectX 지향입니다. 알파 채널 유무에 관계없이 압축 (손실), 압축되지 않은 상태 일 수 있습니다.

내가 아는 한, DirectX는 압축 형식과 압축되지 않은 형식의 두 가지 형식 (형식)을 지원합니다. 그 외에도 텍스처에 밉맵이 있거나 밉맵이 없을 수 있습니다. OpenGL 은 압축 형식을 지원해야하지만 OpenGL에서 사용하지 않으므로 잘 모르겠습니다.

  • 밉맵이없는 비 압축 2D 텍스처에는 비디오 메모리의 바이트가 적어도 width*height*pixel_size (드라이버가 더 많이 할당 할 수 있음)이 필요합니다.
  • 밉맵 (전체 밉맵 체인)이있는 비 압축 2D 텍스처는 적어도 width*height*pixel_size*2 바이트의 비디오 메모리를 필요로합니다.
  • 밉맵이없는 비 압축 큐빅 텍스처는 적어도 size*size*pixel_size*6 바이트의 데이터를 필요로합니다.
  • 밉맵이없는 비 압축 볼륨 텍스처는 적어도 width*height*depth*pixel_size 바이트의 데이터를 필요로합니다.
  • 압축 된 텍스처는 압축되지 않은 것보다 적은 바이트를 사용하지만 정확한 바이트 수를 예측하기는 어렵습니다.
  • 이제는 here's a list of texture formats for DirectX입니다. DXT이 아닌 것은 압축되지 않았지만 채널 집합과 채널 당 비트 수가 다릅니다. 예를 들어 여러 가지 16 비트 텍스처 형식이 있습니다. DXT 형식은 손실 압축을 제공하므로 셰이더의 노멀 맵에 적용하면 눈에 띄지 않는 추악한 아티팩트가 생성됩니다. 데이터에 따라 DXT 형식은 텍스처 크기를 크게 줄일 수 있습니다. 형식이 손실되기 때문에 일반지도와 알파 채널로 가면되는 2D 미술에 적합하지 않습니다.

    일부 참조

    당신은 (당신은 IOS와 같은 뭔가를 개발하는 경우)의 DirectX SDK를, OpenGL을 표준 또는 플랫폼 설명서를 다운로드하고 독서를 시작할 수 있습니다.

    1

    SigTerm의 훌륭한 답장을 추가하기 만하면 : PVRTC는 "비디오"메모리와 저장된 파일 모두에서 4bpp 또는 2bpp를 사용합니다 (추가 파일 압축을 얻기 위해 zlib를 사용하지 않는 한). iOS GPU는 기본적으로 이러한 형식을 압축 해제합니다.

    이러한 PNG 및 JPG 형식은 파일 데이터 크기를 줄이는 데 유용하지만 GPU가 액세스 할 수 있도록 32bpp로 압축을 풀어야합니다. 이러한 형식은 텍스처에 필수적인 픽셀 데이터에 대한 임의 액세스를 허용하지 않기 때문에 필요합니다.

    FWIW, PVRTC 및 기타 텍스처 압축 방법에 대한 배경 정보 can be found here :

    관련 문제