c++ - 在着色器文件中实现照明我的所有对象都变黑了
问题描述
我的颜色肯定会出现,因为当我在最终结果颜色中添加 0.8 时,您几乎看不到它们。除了名为 Light_Position 的统一矢量 3 和启用照明之外,我没有在 main 中编写任何照明代码,main 中是否需要代码来获取表面法线和其他内容?如果是这样,请告诉我我需要做什么。
主要用于照明:
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, position.y, position.z, 1.0));
Normals = mat3(transpose(inverse(just_translations))) * normal;
}
解决方案
推荐阅读
- javascript - 我在使用节点 JS 在服务器上执行简单的 JavaScript 代码时遇到问题
- forms - 这有一个 ScrollToAsync 参数,您可以将其设置为“true”或“false”
- mysql - 多选,子组
- java - 如何递归字符串以验证它在第一个字符之后仅包含数字
- java - Android 将文本作为图像共享给其他应用
- python-3.x - 如何从斯坦福 NLTK 解析树中提取动词短语
- dart - ViewPostImeInputStage ACTION_DOWN 颤动
- python-3.x - 重新采样后尝试返回索引列表
- html - 有没有办法在 Shadow-DOM 中访问 CSS 中的 HTML 标签属性?
- php - 如何使用页面模型获取表单字段集?