-2
#version 150
에 쉐이더를 썼습니다. 나는 제복에 문제가있다. 내가 light uniform (vec4)을 사용하면 내 장면이 사라집니다. 설정 유니폼의GLSL - 균일 오류
추출 :이 작품
typedef struct { float x, y, z, w; } vec4;
//...
class MyClass {
GLuint _id;
vec4 light_diffuse;
};
//...
void MyClass::setUniforms {
//...
GLint location = glGetUniformLocation(_id, "in_light_diffuse");
//...
glUseProgram(_id);
//...
glUniform4fv(location, 1, (const GLfloat *)&light_diffuse);
//...
}
:
#version 150
in vec4 in_vertex;
in vec3 in_normal;
in vec4 in_color;
uniform mat4 in_mvp_matrix;
uniform vec4 in_light_position;
uniform vec4 in_light_ambient;
uniform vec4 in_light_diffuse;
uniform vec4 in_light_specular;
out vec4 v_color;
void main() {
//vec4 a = in_light_position + in_light_ambient + in_light_diffuse + in_light_specular;
v_color = in_color;
gl_Position = in_mvp_matrix * in_vertex;
}
본 하지 않는 WORK :
#version 150
in vec4 in_vertex;
in vec3 in_normal;
in vec4 in_color;
uniform mat4 in_mvp_matrix;
uniform vec4 in_light_position;
uniform vec4 in_light_ambient;
uniform vec4 in_light_diffuse;
uniform vec4 in_light_specular;
out vec4 v_color;
void main() {
vec4 a = in_light_position + in_light_ambient + in_light_diffuse + in_light_specular;
v_color = in_color;
gl_Position = in_mvp_matrix * in_vertex;
}
첫 번째 경우에 내가 다채로운 개체를 볼 수 있습니다, 그러나 두 번째 모든 것이 사라집니다. 나는 계산을 위해이 유니폼을 사용하지 않는다. out_flag_color
그리고 결과는 빈 화면이다.
간단합니다. 내가 그 중 하나를 사용한다면 (아무리해도 상관 없습니다) 비어 있습니다.
아무도 도움이 되셨습니까?
조명 계산을 어떻게 수행하고 있습니까? – Poriferous
아직 계산이 없습니다. 나는 'out_frag_color'를 밝은 색상으로 설정할 수도 없습니다. 그들은 비어 있거나 뭔가 있습니다. 모든 결과가 빈 장면이기 때문에 조명을 계산할 수 없습니다. – eSeverus
오케이. 한 번 더 내 질문을 읽고, 난 변수를 v_color 다양한 변수를 통해'out_frag_color' (픽셀 출력)'vec4 (1, 0, 0, 1)', 기본적으로 상수 확산 색상을 쓸, 아무것도 더 ('out_frag_color = v_color = in_light_diffuse'). 그리고 빈 장면이 있습니다. 'out_frag_color = v_color = in_color'속성의 색상이 잘 작동하고, 객체가 화려하고 눈에.니다. – eSeverus