2016-12-07 1 views
4

WebGL에는 8 개의 텍스처가 있습니다.WebGL의 최대 텍스처 수는 얼마입니까?

제 질문은 전역 적으로 최대 8 개입니까, 아니면 셰이더/프로그램 당 현명한 것입니까?

쉐이더/프로그램 별 한계라면, 한 쉐이더의 유니폼에 텍스처를로드하고 나면 다른 쉐이더에 대해이 슬롯을 재사용 할 수 있습니까? 하나의 모양에 TEXTURE0을 사용한다고 가정하면 TEXTURE0을 다른 모양으로 사용할 수 있습니까?

답변

10

한도는 그리기 호출 당입니다. draw 호출을하고 특정 쉐이더 프로그램을 호출하면 제한에 의해 제약을 받지만 다음 무승부 호출은 동일한 애니메이션 프레임에서 완전히 다른 텍스처를 사용할 수 있습니다.

또한 8은 최소 보증입니다. 시스템은 적어도 8 개를 지원해야합니다.은 WebGL을 준수해야합니다. 그러나 더 멋진 그래픽 카드는 8 개 이상을 지원합니다. 당신은 당신이 좋아에있어 플랫폼에 대한 이미지 텍스처의 최대 수를 조회 할 수 있습니다

또한 버텍스 텍스처 찾아보실 수 있습니다
var maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); 

:

gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS) 

또는 둘의 조합 :

gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS) 

WebGL Report (부인, 내가 작성자) 같은 사이트를 사용하여 현재있는 플랫폼 (조각 쉐이더 -> 최대 텍스처 유닛 아래)에서이 통계를 조회 할 수도 있습니다.

WebGL Stats을 확인하여 최대 이미지 텍스처에 대한 지원 그래프를 확인할 수도 있습니다. 그래프에서는 최대 16 개의 이미지 텍스처에 대한 지원이 매우 보편적이며 현대적인 브라우저에서 약 95 %의 지원율을 보이고 있음을 보여주는 그래프가 있습니다 (MAX_TEXTURE_IMAGE_UNITS).

+0

전방에 텍스처를 업로드하는 대신 각 그리기 호출간에 텍스처를 전환해야한다는 뜻입니까? 어느 것이 또 다른 질문입니다. 드로 콜 (텍스쳐가 아닌 다른 것)마다 유니폼을 업로드해야합니까? 유니폼을 프로그램에 업로드 했습니까? –

+0

그리기 호출이 이전 그리기 호출과 다른 텍스처를 사용하는 경우 그리기 호출간에 텍스처를 다시 바인딩해야합니다. 비 텍스쳐 유니폼에 대한 질문은 별도의 질문처럼 들리지만, 아마도 그것에 초점을 맞춘 새로운 질문을 게시하십시오. – emackey

관련 문제