반응형
유니폼의 GLSL 배열 만들기?
OpenGL의 조명을 그대로두고 직접 만들고 싶습니다. 셰이더가 다양한 수의 조명을 허용하기를 원합니다.
GLSL 셰이더에서 유니폼 배열을 선언 할 수 있습니까? 그렇다면 해당 유니폼의 값을 어떻게 설정합니까?
네 가능합니다. 예를 들어 C에서하는 것과 유사한 균일 한 배열을 선언합니다.
uniform float v[10];
그런 다음 사용하여 값을 설정할 수 있습니다. glUniform{1,2,3,4}{f,i}v
GLfloat v[10] = {...};
glUniform1fv(glGetUniformLocation(program, "v"), 10, v);
예, GLSL 셰이더에서 유니폼 배열을 선언 할 수 있습니다. 몇 가지 예를 보려면 Google "glsl uniform array"를 사용하십시오 (편집 : 또는 datenwolf의 예 참조). 그러나 서로 다른 그래픽 카드로 보낼 수있는 유니폼 수에는 제한이 있습니다 (적어도 오래된 그래픽 카드에서는 현재 유니폼에 대해 잘 모르겠습니다 (아직있을 것이라고 생각하지만)).
유니폼 경로를 따라 가기로 결정했다면 유니폼 버퍼를 사용하는 것이 좋습니다. http://www.opengl.org/wiki/Uniform_Buffer_Object 에 따르면 "일관된 버퍼 바인딩 간 전환은 일반적으로 프로그램에서 수십 개의 유니폼을 전환하는 것보다 빠릅니다".
많은 수의 조명과 매개 변수가있는 경우 데이터를 부동 버퍼로 보낼 수도 있습니다.
참고 URL : https://stackoverflow.com/questions/8099979/creating-a-glsl-arrays-of-uniforms
반응형
'Programing' 카테고리의 다른 글
PowerShell에서 "종료"란 정확히 무엇입니까? (0) | 2020.11.25 |
---|---|
저장 프로 시저 대. (0) | 2020.11.25 |
C ++에서 부호없는 double? (0) | 2020.11.25 |
Azure SQL Database 웹 대 비즈니스 에디션 (0) | 2020.11.25 |
테스트 중 @Autowired 비공개 필드 삽입 (0) | 2020.11.24 |