2012-08-22 2 views
0

OpenGL이 자동으로자를 수 있습니까? 아니면이 오류입니까?glUniform4f가 호출되어 float3 변수를 설정하면 어떻게됩니까?

glUniform4fv에 float4 값이있는 큰 배열 (즉, 3 대신 행 당 4 개의 부동 소수점)을 사용하여 프로그램에서 float4x3의 배열을 설정하는 것 같은 불쾌한 OpenGL 코드가 있습니다. 작동하는 것 같습니다. 즉, OpenGL은 행렬의 각 행에 3 개의 값을 복사하고 4 번째 행은 건너 뜁니다. 이것이 항상 효과가 있다고 가정해도 괜찮습니까?

+0

OpenGL에는 'float4','float3' 또는'float4x3' 유형이 없습니다. 'vec4','vec3','mat4x3'에 대해 이야기하고 있습니까? –

+0

@NicolBolas 예 – kaalus

답변

0

GLSL 사양은 이것에 매우 분명하다 glUniform* 통화 크기와 종류가 정확히이 (샘플러와 부울 제외) 쉐이더에서 선언 된 크기 및 유형과 일치해야합니다. 따라서 glUniform4fv을 호출하는 경우 vec4 유형의 단일 변수 또는 vec4 유형의 배열 변수에 count 항목의 배열을 설정해야합니다.

관련 문제