在着色器文件中实现照明我所有的对象都变黑

问题描述

我的颜色肯定显示出来,因为当我在最终结果颜色中添加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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...