2010-04-10 4 views
2

크로스 플랫폼 2D 온라인 게임을 만들려고 노력 중이며 맵에 타일이 사용되었습니다. 타일을 렌더링하는 내 타일셋은 꽤 큽니다. 하드웨어 렌더링을 사용하지 않도록 설정하거나 적어도 하드웨어 렌더링을 사용 가능하게 만드는 방법을 알고 싶었습니다. 따라서 비디오 RAM의 기본 한계는 무엇인지 알고 싶습니다. Direct3D는 텍스처 크기 제한이 있습니다 (두 가지의 텍스처 크기를 의미하지는 않습니다).OpenGL 비디오 RAM 제한

답변

0

소프트웨어 렌더러를 사용하려면 Mesa에 링크하십시오.

21.130 내 장치가 하드웨어 가속 렌더링하는 최대 크기의 텍스처 맵은 무엇입니까 :

당신은 these methods를 사용하여 최대 텍스처 크기의 추정치를받을 수 있나요?

좋은 OpenGL 구현은 가능할 때마다 하드웨어 가속으로 렌더링합니다. 그러나 하드웨어 가속을 구현하지 않아도됩니다. OpenGL은 응용 프로그램이 하드웨어 가속을 사용하고 하드웨어 가속을 사용하고 있는지 질의하는 메커니즘을 제공하지 않습니다. 마음에이 정보를, 다음은 여전히 ​​유용 할 수 있습니다 :

GLint texSize; 
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize); 

텍스쳐가 하드웨어 가속되지 않는 경우 :

당신은 당신의 구현은 다음 호출로 지원하는 최대 텍스처 크기의 추정치를 얻을 수 있습니다 여전히 GL_MAX_TEXTURE_SIZE에 의해 반환 된 크기 제한 내에서 여전히 올바르게 렌더링되어야합니다.

glGet*() 함수는 특정 텍스처에 사용할 형식, 내부 형식, 유형 및 기타 매개 변수를 알 수 없기 때문에 이는 단지 예상치 일뿐입니다. OpenGL 1.1 이상은 텍스처 프록시를 허용하여이 문제를 해결합니다.

여기 질감 프록시를 사용하는 예이다 :

glTexImage2D(GL_PROXY_TEXTURE_2D, level, internalFormat, width, height, border, format, type, NULL); 

주 화소 파라미터가 NULL 인 타겟 파라미터 GL_PROXY_TEXTURE_2D 경우의 OpenGL은 텍셀 데이터를로드하지 않기 때문이다. 대신 OpenGL은 지정된 크기와 설명의 텍스처를 수용 할 수 있는지 여부를 고려합니다. 지정된 텍스처를 조정할 수없는 경우, 폭 및 높이 텍스처 값은 0으로 설정됩니다. 텍스처 프록시 호출을 한 후에는 다음과 같이이 값을 쿼리해야합니다.

GLint width; 
glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); 

if (width==0) { 
    /* Can't use that texture */ 
}