2013-10-28 2 views
5

내 프로그램에는 여러 상황에서 여러 번 사용되는 텍스처가 있습니다. 각 상황에서 특정 매개 변수 세트를 적용해야합니다.OpenGL : 서로 다른 매개 변수로 동일한 텍스처 재사용

추가 버퍼를 생성하지 않고 필자가 다른 용도로 사용할 때마다 텍스처 복사본을 만드는 것을 피하고 싶습니다. 더 좋은 방법이 있는지 알고 싶습니다.

답변

7

이것은 sampler objects이 대상입니다 (버전 3.3 이후로 사용 가능하거나 ARB_sampler_objects을 사용). 샘플러 객체는 텍스처 이미지를 매개 변수와 분리하므로 여러 매개 변수 세트로 하나의 텍스처를 사용할 수 있습니다. 그 기능은 당신의 문제를 염두에두고 만들어졌습니다.

견적 ARB_sampler_objects 확장 사양에서

: 화상 데이터 (MIP-체인 배열 큐브 맵 얼굴 세트, 등) 및 샘플링 된 상태의 세트로 간주 확장되지는 OpenGL 텍스처

(샘플링 모드 , 밉 매핑 상태, 좌표 랩핑 및 클램핑 규칙 등)을 단일 객체로 결합합니다. 일반적으로 응용 프로그램에서는 제한된 샘플링 상태 집합을 사용하여 여러 텍스처를 사용하는 것이 일반적입니다. 이러한 방식으로 텍스처를 사용하려면 응용 프로그램이 여러 텍스처 이름을 생성하고 구성해야하며 응용 프로그램과 구현 모두에 오버 헤드가 추가되어야합니다. 또한 응용 프로그램에서 텍스처를 여러 가지 방법으로 샘플링하려는 경우 (예 : 밉 매핑 사용 여부에 관계없이) 텍스쳐의 상태를 수정하거나 각각에 동일한 이미지 데이터의 복사본이있는 두 개의 텍스처를 만들어야합니다 . 이로 인해 응용 프로그램에 런타임 및 메모리 비용이 발생할 수 있습니다.

+0

또한 샘플러 개체를 사용할 수없는 경우 필요할 때마다 텍스처 매개 변수를 변경할 수 있습니다. 그것들은 일회성 설정이 아닙니다. – datenwolf