나는이 기능이 있습니다glGetProgramIv는()가 보낸 포인터를 변경하지 않습니다
void GetAllUniforms(unsigned int prog) {
int total = -1;
glGetProgramiv(prog, GL_LINK_STATUS, &total);
printf("total & prog: %d %d\n", total, prog);
for(int i=0; i<total; ++i) {
int name_len=-1, num=-1;
GLenum type = GL_ZERO;
char name[100];
glGetActiveUniform(prog, i, sizeof(name)-1,
&name_len, &num, &type, name);
name[name_len] = 0;
unsigned int location = glGetUniformLocation(prog, name);
printf("Name: %s/Number: %d/Location: %d\n", name, num, location);
}
}
그건를 목적으로,이 전이 기능을 실행 말을 잘하게, 그러나, 를 간단하게 모든 유니폼을 취득하여 프린트한다 ? 그것은 나에게 줄 것이다 :
Running newpmo/build/out
total & prog: -1 1
활성 유니폼 말도 원인이 내가 Gl_Position를 얻을 수있는 위치 벡터를 곱하여 WorldMatrix를 가지고 있고, 더 디버깅에 내가 발견 한 내 GLSL 쉐이더에서 분명이없는 사용자들은 경우 난이 얻을의 5 가정 해 봅시다 다른 번호로 총을 설정
Running newpmo/build/out
total & prog: 5 1
Name: /Number: -1/Location: -1
Name: /Number: -1/Location: -1
Name: /Number: -1/Location: -1
Name: /Number: -1/Location: -1
Name: /Number: -1/Location: -1
이 glGetProgramiv 실제로 내가 내 주소를 전송하고, 비록 어떤 방식으로 총 영향을 미치지 않는 것을 보여줍니다 원인이 꽤 이상한 프로그램이 제대로 컴파일되고 링크되었습니다!
어떻게 가능합니까?
내 잘못한 점 Gl_Link_Status, 디버깅을 시도해 봤지만 끝내 버렸어. glactiveuniiforms ... – Whiteclaws
나는이 오류를 발견했다. – Whiteclaws