2
WebGL (≈ OpenGL ES 2.0)을 사용하고 있습니다. 현재 응용 프로그램에서는 텍스처 단위 0을 모델 별 텍스처로 사용하고 1과 2는 셰이더에서 사용하는 상수 텍스처로 사용합니다. 로드 텍스처를 설정하기 위해텍스처 초기화와 관련하여 glActiveTexture를 어떻게 관리해야합니까?
, 제가 그러나
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(...);
gl.texParameteri(...);
을,이 텍스처 현재 텍스처 유닛에 결합 된 상태에서 굴러. 그것은 단지 어쨌든 기하학 드로잉 전에 리셋 텍스처 장치 (0)에 대한 바인딩 영향 때문에이 프로그램을 방지하기 위해, I는 상기 코드의 시작
gl.activeTexture(gl.TEXTURE0);
첨가.
'스크래치'텍스처 단위를 사용할 수있는 상황이 발생하지 않는 더 나은 방법이 있습니까? 이 상태 관리 문제에 대해 확립 된 모범 사례가 있습니까?
고마워요,하지만 저는 묻지 않습니다 "활성 텍스처 유닛에 대한 정책은 무엇이되어야합니까?" - 이미 설명 된 원칙을 따릅니다. 그러나 "다른 텍스처 유닛 사용에 방해가되는 텍스처를 어떻게 초기화해야합니까?"는 규칙에 대한 제약을 제안 할 수 있습니다. –
당신은 내가 말한 것에 대한 또 다른 예를 읽을 수 있습니다. GL에는 '발을 밟을 수있는 상태가 많이 있습니다. 당신은 그 작업을 위해 별도의 텍스처 유닛을 사용할 수 있습니다. 즉, 아무것도 재설정 할 필요가 없지만'glActiveTextureUnit()'를 두 번 호출해야한다는 것을 의미합니다. 또는 현재 텍스처 유닛을 clobber 한 다음 텍스처 상태를 설정하는 책임을 드로잉 파트에 전달할 수 있습니다. 어느 쪽이든, 당신의 프로그램 (일종의)의 일부는해야 할 여분의 일이 있습니다. –
한 가지 방법이나 다른 방법으로가는 것은 효율과 유지 관리간에 * 작은 * 절충점이됩니다. –