2011-08-07 3 views
0

OpenGL을 사용하여 웜 스타일의 비트 맵 파괴 가능 지형 게임을 만들고 있습니다. 비디오 메모리 측면에서 세계의 크기에 대한 제한이 어디에 있는지 알고 싶습니다.OpenGL : 텍스처 크기 및 비디오 메모리

현재 지형에 512 * 512 RGBA 텍스처 블록을 사용합니다.

  • 대략 512x550 RGBA 텍스처가 얼마나 많은 양의 메모리가 필요합니까?
  • 내부 자동 압축이 진행되고 있습니까?
  • 대부분의 사용자 컴퓨터가 얼마만큼의 비디오 메모리를 무료로 사용할 수 있습니까?

답변

0

32 BPP (4 바이트)하면 = 1메가바이트

4 * 512 * 512를 받기에 대한 텍스처 압축 참조 : http://www.oldunreal.com/editing/s3tc/ARB_texture_compression.pdf

+3

아니요, RGBA의 512x512 텍스처 (각 채널의 바이트)는 4x512x512 = 1MB가됩니다. – Bart

+2

appr. 4 * 512 * 512 * 1.33 with MIPMAPS – epatel

+0

반드시 32-bpp (또는 8-bpc)를 의미합니다. –

1

나는 매우 걱정 않을 것입니다. 8192 * 2048 세계 (폭 4 스크린, 높이 2 스크린, 웜 스타일 게임의 경우 매우 큼)로 128MB에 들어 맞는 8 * 2 * 4 = 64Mb (밉맵, 기타 텍스처, 프레임 버퍼 추가) 만 있으면됩니다. 범위. 내가 아는 한 오래된 GPU조차도 그런 종류의 메모리를 가지고 있습니다 (GeForce4 카드에 대해서는 언급하지 않습니다).

오래된 GPU에는 각 텍스처의 크기가 제한 될 수 있지만 이미 512x512 청크로 분할되어 있으므로 문제가되지 않습니다.

비디오 메모리가 문제가되는 경우 사용자가 절반 크기의 텍스처를 사용하도록 허용 (즉, 세계를 4096x1024 및 256x256 랭크로 다운 샘플링)하고 필요에 따라 사용되지 않는 새 영역을 가져올 수 있습니다.

2

대략적으로 512x550 RGBA 텍스처가 얼마나 많은 양의 메모리를 사용할 수 있습니까?

정보가 충분하지 않습니다. 은 항상이어야합니다 (GL_RGBA , GL_RGBA).

GL_RGBA8은 픽셀 당 32 비트를 차지하며 4 바이트입니다. 따라서 512 * 512 * 4 = 1MB입니다.

내부 자동 압축이 진행되고 있습니까?

가 얼마나 많은 비디오 메모리 나는 대부분의 사용자의 컴퓨터를 무료로 가질 것으로 예상 할 수있다 호?

얼마 남았습니까?

OpenGL은 사용 가능한 공간에 따라 이미지 데이터를 in/out으로 표시합니다. GPU 메모리가 부족하면 OpenGL은 시스템 메모리를 행복하게 할당하고 필요에 따라 이미지를 업로드합니다.

그러나 솔직히 말해서, 당신의 작은 웜 게임은 실제로 메모리 크기 측면에서 어떤 것도 비용을 지불하지 않을 것입니다. 어쩌면 64MB를 할 때, 꼭대기. 걱정할 필요가 없습니다.

+0

메모리 요구 사항은 크게 다릅니다. 공정한 라인 (예 : 64Mb)을 선택하고 적합하도록 노력해야합니다. – Kromster

0

다시 말하지만,이 엔진에 따라 달라집니다,하지만 난 당신이라면 내가 이런 짓을 했을까 :

지형 텍스처는 아마 모자이크 같은 텍스처를 재사용 할 것이다, 당신은 픽셀이 존재하는지 여부를 알 필요가 있기 때문에 , 또는 파괴 된 경우 256x256보다 큰 모자이크 텍스처를 사용하면 GL_RG16 내부 형식으로 이동할 수 있습니다 (각 구성 요소는 [0, 255] -> [0.0]에서 매핑해야하는 텍스처 좌표입니다) , 1.0] 그리고 지형이 파괴되었다는 것을 나타 내기 위해 특별한 값을 남겨 둘 것입니다.) 모든 512x512 블록을 0.5MB로 만듭니다. 지형이 있음을 나타 내기 위해 여분의 바이트를 추가하는 것이지만 3 바이트 형식은 너무 잘 캐시되지 않습니다.