2017-03-19 2 views
0

뷰를 기반으로 텍스처 랩핑을 변경해야하는 텍스처가 있습니다.바인드리스/상주 텍스처의 매개 변수 수정

나는 묶을 수없는 질감을 사용하고 있으므로 거주하게되었습니다.

나는 핸들이 거주 만약 내가 glTexParameter/glTextureParameter를 호출 어차피 이해하지만이 작동 중 하나를하지 않습니다

makeNonResident() 
glTextureParameter(....) -> invalid_operation 
makeResident() 

나는 무엇을 놓치고? 이상하게도 충분히 렌더링 할 수는 없습니다. 텍스처를 생성하고 상주시키는 것입니다.

답변

1

텍스처에서 핸들을 가져 오기 위해 glGetTextureHandleARB을 호출하면 텍스처가 변경되지 않습니다. immutable storage이 아니지만, 은 완전히입니다.

매개 변수 중을 변경할 수 없습니다. 다시는. 실행 취소는 없습니다.

이 이유는 핸들이 텍스처의 모든 매개 변수를 내부적으로 저장하기 때문입니다. 따라서 이러한 매개 변수를 변경해도 핸들 복사본에 영향을주지 않으며 텍스처가 참조하는 모든 핸들에 변경 사항을 적용하면 성능 및 동기화에 과도한 부담을 초래할 수 있습니다.

당신 정말 희망은 질감/sampler 쌍에서 새로운 핸들을 얻을 수 glGetTextureSamplerHandleARB을 사용하는 것입니다. 따라서 원하는 샘플링 매개 변수로 샘플러를 생성 한 다음 원본 샘플과 새로운 텍스처를 처리 할 수 ​​있습니다. 샘플러의 매개 변수는 텍스처의 매개 변수를 덮어 쓰며 텍스처와 샘플러의 매개 변수를 모두 인코딩하는 새 핸들을 얻습니다.

이제 이러한 종류의 작업을 처리 한 후에 핸들을 생성하고 싶지는 않습니다. 따라서 필요한 텍스쳐/샘플러 쌍을 정확히 계획하고 미리 만들어야합니다.

+0

감사합니다. 그거야. 방금 전에 두 개의 다른 샘플러를 만들었고 glGetTextureSamplerHandleARB와 함께 하나 또는 다른 샘플러를 사용했습니다. – psquare