首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的照明是否正确?

我的照明是否正确?
EN

Stack Overflow用户
提问于 2011-11-13 11:47:02
回答 1查看 428关注 0票数 0

我一直在读一篇pdf file on OpenGL lighting

上面写的是Gouraud阴影:

代码语言:javascript
复制
• Gouraud shading
– Set vertex normals
– Calculate colors at vertices
– Interpolate colors across polygon
• Must calculate vertex normals!
• Must normalize vertex normals to unit length!

这就是我所做的。这是我的顶点和片段着色器文件

V_Shader:

代码语言:javascript
复制
#version 330

layout(location = 0) in vec3 in_Position; //declare position
layout(location = 1) in vec3 in_Color;

// mvpmatrix is the result of multiplying the model, view, and projection matrices */
uniform mat4 MVP_matrix;
vec3 ambient;

out vec3 ex_Color;

void main(void) {

   // Multiply the MVP_ matrix by the vertex to obtain our final vertex position (mvp was created in *.cpp)
   gl_Position = MVP_matrix * vec4(in_Position, 1.0);
   ambient = vec3(0.0f,0.0f,1.0f);
   ex_Color = ambient * normalize(in_Position) ; //anti ex_Color=in_Color;
}

F_shader:

代码语言:javascript
复制
#version 330

in vec3 ex_Color;
out vec4 gl_FragColor;

void main(void) {
   gl_FragColor = vec4(ex_Color,1.0);
}

插值是由片段着色器负责的,对吧?

这是我的球体(它是低多边形btw):

这是实现Gouraud着色的标准方式吗?(我的球体中心为(0,0,0))谢谢您的耐心

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-13 12:14:23

代码语言:javascript
复制
ex_Color = ambient * normalize(in_Position) ; //anti ex_Color=in_Color;

请允许我使用quote myself,“这当然不符合‘照明’的要求。”从你第一次问这个问题到现在,这并没有停止。

这不是照明。这只是对模型空间位置进行标准化,并将其乘以环境色。即使我们假设模型空间的位置以零为中心并表示球体上的一个点,将灯光乘以法线也是没有意义的。这是而不是照明。

如果您想了解照明的工作原理,请参阅read this. Or this.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8109451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档