2012-08-14 3 views
0

텍스처가 더 작은 텍스처로되어 있고이 응용 프로그램에서 개별 파일로 분할 할 수없는 텍스처가 있습니다. 모델에 대해 이러한 텍스처를 타일링해야합니다.OpenGL에서 3D 모양 위에 텍스처를 바둑판 식으로 배열

지오메트리 분할은 작동하지만 장면 복잡성이 증가하고 얇은 삼각형이 생성되면 시각적 인 아티팩트가 나타날 수 있습니다.

런타임시 원본에서 복사 한 새 텍스처를 할당해도 작동하지만 텍스처 메모리 사용량이 늘어나고 기본 텍스처가 변경되면 오래된 데이터가 포함됩니다 (이 애플리케이션에서는 감지 할 수 없음).

OpenGL 타일링을 적용 할 수 있도록 하위 텍스처를 직접 바인딩 할 수있는 방법이 없다면 어떻게해야할까요?

+0

프래그먼트 셰이더 프로그램을 사용하여 텍스처 좌표를 하위 텍스처 조회로 변환 할 수 있습니다. – MvG

+0

이것은 엄청난 잔인한 것처럼 보이며이 특정 한 가지를 별도로 수행하는 간단한 방법이 없다면 애플리케이션의 기존 렌더링 파이프 라인을 방해 할 수 있습니다. – JAKJ

답변

1

올바른 방법은 프래그먼트 셰이더를 사용하여 텍스처 좌표를 직접 타일링하는 것입니다. 당신이 조각 쉐이더를 사용하지 않을 경우 대규모 과잉처럼 보인다 및 응용 프로그램의 기존의 렌더링 파이프 라인

그것을 방해하는 유일한 방법 방해 할 수

이다. 네가 아니면 ... 네가 있어야 해.

현대적인 하드웨어 디자인은 일반적으로 고정 기능을 더 이상 추가하지 않습니다. 그것은 셰이더에게 더 많은 파워와 옵션을주는 것에 관한 것입니다. 기능이 필요한 경우 "코드를 쉐이더에 코드화"하는 것이 일반적으로 올바른 해결책입니다.

그러나 셰이더를 사용할 수없는 경우 유일한 방법은 제안한대로 지오메트리를 수정하는 것입니다.

+0

나는 그럴 가치가 있다고 가정하고, 그런 것들이 작품을 껌깍 거리지 않고 응용 프로그램에 추가 될 수 있는지 알아보기 위해서입니다. 지금까지 한 가지 문제에 대한 전체 쉐이더 서브 시스템을 배우기 위해 시간과 자원이 정말로 필요하다는 점을 고려하면 Google이 할 수있는 것보다 더 많은 시작점을 제공 할 수 있다면 고맙겠습니다. – JAKJ

+0

@ JAKJ에는 고정 기능 파이프 라인의 작동을 복제하기 위해 셰이더 코드를 자동 생성하는 [ShaderGen] (http://www.mew.cx/glsl/shadergen/)이라는 도구가 있습니다. 적합한 Windows 설치가 부족하여 실제로 직접 사용하지는 않았지만 시작 지점으로 사용해 볼 가치가 있습니다. – MvG

관련 문제