2009-05-20 7 views
0

화면보다 낮은 해상도로 텍스처를 캡쳐 (화면에 다시 렌더링하고 흐림 효과를 생성)하고 싶습니다. 꽤 잘 작동하지 않습니다. 밉맵을 사용하여이 작업을 수행 할 수 있음을 알고 있지만 작업 순서가 올바르지 않습니다.OpenGL - 그 화면보다 작은 화면에서 텍스처 복사하기

내 현재 코드 :

width=1024; 
height=1024; 

glGenTextures(1, &texture); 

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, texture); 

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glEnable (GL_BLEND); 
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 

glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, width, height, 0); 

// code for rendering the screen back on goes here 

답변

2

당신은 캡처 한 번에 downfilter 수 없습니다. 더 큰 텍스처로 전체 화면을 캡쳐 한 다음, 밉맵 자동 생성이 가능하면 밉맵을 만들어야하며, 그런 다음 해당 텍스처를 사용하여 다시 렌더링 할 수 있습니다. 밉맵 레벨을 적절하게 조정하십시오.

그러나 자동 밉맵 생성은 대개 상자 필터를 사용하기 때문에보기가 엉망입니다.

나는 FBO (프레임 버퍼 객체)와 GLSL 셰이더를 대신 설정하는 방법을 사용합니다. 그것은 당신에게 모든 단계에 걸쳐 세밀하게 제어 할 수 있습니다 :

  • 는 프레임 버퍼에 원본 이미지
  • 혼합 필터링을 필터링 멋진 가우스 로우 패스를 적용 텍스처
  • 에서 원본 이미지를 만듭니다