如何解决在着色器文件中实现照明我所有的对象都变黑
我的颜色肯定显示出来,因为当我在最终结果颜色中添加0.8时,您几乎看不到它们。除了称为Light_Position的统一矢量3并启用照明功能外,我没有在主照明中执行任何代码,在主照明中是否需要用于捕获表面法线和其他东西的代码?如果是这样,请告诉我该怎么做。
主要用于照明:
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glm::vec3 Light_Position(0.2f,0.1f,0.2f);
int lightpos = glGetUniformLocation(shader,“light_position”);
glUniformMatrix4fv(lightpos,1,GL_FALSE,glm::value_ptr(Light_Position));
//Both fragment and vertex shaders in one file
#shader vertex
#version 330 core
layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
uniform mat4 model_matrix;
uniform mat4 perspective;
uniform mat4 just_translations;
uniform vec3 light_position;
out vec3 fragment_position;
out vec3 Normals;
void main()
{
gl_Position = model_matrix * vec4(position.x,position.y,position.z,1.0);
fragment_position = vec3(just_translations * vec4(position.x,1.0));
Normals = mat3(transpose(inverse(just_translations))) * normal;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。