2012-04-02 3 views
2

나는 이미 implements이라는 spidergl을 사용하는 예제 코드에서 webgl shadow 매핑을 구현하려고합니다. WebGL 위에 직접 구현하려고합니다.쉐이더에서 버텍스 위치 삼중 항은 어떻게 vec4에 매핑됩니까?

나는 거의 비슷한 코드를 가지고 있다고 믿지만 나는 결과를 얻지 못하고있다. 문제의 범위를 코드의 작은 부분으로 좁혔습니다. 내 쉐이더 코드는 vec3과 같이 a_position (정점 위치 속성)을 정의합니다. spidergl 코드는 vec4로 정의합니다. 나는 spidergl 코드를 샅샅이 뒤져서 x-y-z 세 쌍둥이가 vec4로 채워지는 꼭지점 위치 특성을 이해하고 있습니다. 나는 vertexAttribPointer 호출에서 그 트릭을 발견 할 것으로 예상했다. 그러나 그들이 지나가고있는 크기와 보폭의 값은 3과 12입니다. 동일한 코드를 변경했지만 동일한 결과가 아직 나오지 않습니다.

누군가가 위치 세 쌍이 vec4에 매핑되는 기본 메커니즘을 설명 할 수 있습니까? 나는 큐브 모서리의 x, y, z 좌표와 함께 w를 언급하는 코드를 본 적이 없지만 a_positionvec4으로 취하는 셰이더가 있습니다. 그러면 vec4의 네 번째 플로트에 무엇이 채워지 죠?

답변

3

glVertexAttrib 문서의이 섹션에서는 관심을 수

이 명령은 인덱스에 의해 지정된 일반 정점 속성의 하나, 둘, 셋, 또는 네 가지 구성 요소를 지정하는 데 사용할 수 있습니다.

은 명령의 이름에 하나의 값만 전달됨을 나타내며 일반 정점 속성의 첫 번째 구성 요소를 수정하는 데 사용됩니다. 두 번째와 세 번째 성분은 0으로 설정 될 것이며, 네 번째 성분은 1 마찬가지로

설정 명령의 이름에 2 값은 처음 두 개의 구성 요소에 제공되는, 제 나타내는 것 구성 요소는 0으로 설정되고 네 번째 구성 요소는 1로 설정됩니다.

은 명령의 이름에서 첫 번째 세 구성 요소에 값이 제공되고 네 번째 구성 요소가 1로 설정됨을 나타냅니다 반면 이름에 은 값이 네 가지 구성 요소 모두에 대해 제공됨을 나타냅니다. 당신이 VEC3와 vec4 속성을 설정 기본적으로 경우

의 vec4의 처음 3 개 요소는 VEC3 일치하고, 4 요소는 1.

내 생각 엔으로 설정 문제는 다른 곳에 있다는 것이다 귀하의 코드입니다.

+0

+1 for _food for thought_ 나는 GLSL 스펙에서 이것을 예상했지만, 두 번째 생각에서, 실제로 거기에 속하지는 않는다. –

관련 문제