2010-08-23 2 views
2

다른 하드웨어에서 텍스처를 밉 매핑하는 데 문제가 있습니다. 그것되지는 mipamp가 있어야하는데 어디에서 이렇게 GFX 카드 메모리를 읽기 위해 노력하고 따라서 카드가 다른 텍스처를 렌더링 할 때 OpenGL : 올바른 밉 매핑 방법을 자동으로 선택하는 방법은 무엇입니까?

char *exts = (char *)glGetString(GL_EXTENSIONS); 

if(strstr(exts, "SGIS_generate_mipmap") == NULL){ 
    // use gluBuild2DMipmaps() 
}else{ 
    // use GL_GENERATE_MIPMAP 
} 

그러나 일부 카드에이 GL_GENERATE_MIPMAP을 말한다

가 지원됩니다 : 나는 다음과 같은 코드를 사용 그 미플 라이프들에게.

glGenerateMipmapEXT (GL_TEXTURE_2D)를 시도했지만 모든 텍스처를 흰색으로 만들었습니다. GL_TEXTURE_2D를 사용하기 전에 해당 기능을 사용했습니다.

모두에게 gluBuild2DMipmaps()를 사용할 수 있습니다. 작동하기 때문에 모든 사용자에게 gluBuild2DMipmaps()를 사용할 수 있습니다. 그러나 나는 정말로 오래된 카드를 가지고있는 2 명의 사용자가 있기 때문에 새로운 카드가 10 배 더 느리게로드되게하고 싶지 않습니다.

어떻게 밉맵 방법을 올바르게 선택합니까?

답변

1

운전수가 거짓말 인 경우 운전자가 할 수있는 일이 많지 않습니다. 또한 glGenerateMipmapEXT는 GL_EXT_framebuffer_object 확장의 일부임을 기억하십시오.

당신이 잘못하고있는 것은 SGIS_generate_mipmap 확장을 검사하고 GL_GENERATE_MIPMAP을 사용하는 것입니다.이 열거 형은 핵심 OpenGL에 속하므로 실제로 문제는 아닙니다.

당신이 설명하는 문제는 매우 끔찍한 OpenGL 구현 버그처럼 들리지만, 나는 그 카드 (목록이 있고 시작시 확인)에서 gluBuild2DMipmaps를 사용하여 무시할 것입니다.

+1

첫 번째 부분은 +1이지만 드라이버를 비난하지는 않습니다. 대신 GL_GENERATE_MIPMAP_SGIS를 사용해보십시오. 가능한 경우 GL_EXT_framebuffer_object를 확인하고 glGenerateMipmap을 사용할 수도 있습니다. – Calvin1602

+0

문제는 그 카드를 감지하는 방법을 모른다. – Newbie

+0

나는 그것이 작동하고있어, 어떤 테스트 후에 이걸 받아들이겠다고 생각한다. – Newbie

2

glGenerateMipmap은 최소한 OpenGL 3.3에서 기능의 일부로, 확장명으로는 지원되지 않습니다.

당신은 다음과 같은 옵션이 있습니다 : 지금까지 glGenerateMipmap를 지원하는 첫 번째는, glGenerateMipmap를 사용하는 것이 더 최근의 경우,

  1. 확인의 OpenGL 버전.
  2. OpenGL 1.4..2.1은 texParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE)을 지원합니다 (this 참조). 기본 레벨에서 밉맵을 생성합니다. 이것은 아마도 OpenGL 3에서 "사용되지 않음"이되었지만 사용할 수 있어야합니다.
  3. GLEE 또는 GLEW ans는 glewIsSupported/gleeIsSupported 통화를 사용하여 내선을 확인하십시오.

또한 확장을 사용하는 대신 OpenGL 사양을 사용하는 것이 더 쉬워야한다고 생각합니다. 많은 하드웨어가 OpenGL 3을 지원하므로 확장 기능이 아닌 OpenGL 사양의 일부로 필요한 기능 (셰이더, 밉맵, 프레임 버퍼 객체, 기하학 셰이더)을 대부분 가져올 수 있어야합니다.

+0

glGenerateMipmap이 나에게 제안을하지 않는다? – Newbie

+0

@Newbie :'texParameteri (GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE)'http://www.opengl.org/sdk/docs/man/xhtml/glTexParameter.xml. glTexImage2D를 호출하기 전에이 매개 변수를 설정해야합니다. – SigTerm

+0

그래도 glGenerateMipmapEXT가 충돌하지 않으면 glGenerateMipmapEXT를 사용해야합니까? – Newbie

관련 문제