2011-11-22 2 views
6

GLSL-ES에서는 배열을 사용할 수 있습니다. 배열 인 속성 정점 가지고정점 속성이 GLSL-ES 2.0의 배열 일 수 있습니까?

uniform vec4 lightPosition[4]; 

가 가능 : 예를 들어, GLSL ES Specification 배열의 균일 한 변수의 다음 예제를 제공? 즉, 사양에 따라 다음과 같은 법적 있습니까?

attribute vec4 foo[3]; // three vec4s per vertex 

GLSL ES 사양에서 명시 적으로 언급 한 답변 (예 또는 아니요)은 무엇입니까? (찾을 수는 없지만 사양의 모든 라인을 읽지는 않았습니다.)

또한 합법적 인 경우 OpenGL ES 2.0 API를 사용하여 이러한 속성을 어떻게 초기화합니까? (glVertexAttribPointer을 사용한다고 가정하면 정점/배열 요소/벡터 요소의 레이아웃은 무엇입니까?)

답변

10

GLSL ES 2.0 specification은 속성을 배열로 선언 할 수 없다고 명시합니다.

데스크톱 GL에서 속성 배열을 가질 수 있습니다. 속성에 속성 색인 (glBindAttribLocation 또는 연결된 쉐이더에 의해 자동으로)이 지정되면 glBindAttribLocation을 사용하면 요청한 속성 색인에서 시작하여 연속 속성을 가져옵니다. foo가 위치 (5)를 받았다 그렇다면, foo[0] 5, foo[1] 6 될 것, 그리고 속성 배열을 할 수 있도록 몇 가지 ES 2.0 확장이 있으면 foo[2]은이 같은 가능성을 작동합니다, 7

될 것이다.

+0

사양에서는 배열로 선언 할 수 없다고합니다. –

+2

@LaurenceGonsalves : 섹션 4.3.3, 놀랍게도 충분한 "속성". 첫 번째 단락의 마지막 문장입니다. –

+1

@ NicolBolas; 데스크탑에서는 버전 1.5 (GL 3.2)에서 배열 속성을 사용하는 것이 합법적 이었으므로 여기에서도 상당히 새롭게 추가되었습니다. – falstro

관련 문제