我是OpenGL ES 2.0世界中的新投标。我正尝试在iOS平台上使用OpenGL ES 2.0实现高光贴图。据我所知,在镜面映射中,我们从镜面反射贴图纹理中提取光的镜面反射分量的值。我在顶点着色器中所做的事情如下:OpenGL ES 2.0中的镜面映射
vec3 N = NormalMatrix * Normal;
vec3 L = normalize(LightPosition);
vec3 E = normalize(EyePosition);
vec3 H = normalize(L + E);
vec4 Specular=(texture2D(sampler_spec, TextureCoordIn)).rgba;
float df = max(0.0, dot(N, L));
float sf = max(0.0, dot(N, H));
sf = pow(sf, Specular.a);
vec3 color = AmbientMaterial + df * DiffuseMaterial + sf * Specular.rgb * SpecularMaterial;
DestinationColor = vec4(color, 1); `
但我在我的游戏中看不到镜面效果。我不知道我要去哪里错。请给出您宝贵的建议。
嗨Christian Rau,根据你的回复我把我的照明计算转移到片段着色器。还有一件事,我想问你从凹凸贴图。我也想实施凹凸贴图。我研究了一些关于凹凸贴图的知识,其中大部分内容都很清晰。我使用OBJ来渲染几何。我很难找到凹凸映射所需的每个顶点切线。你似乎有很好的专业知识,所以请给你宝贵的建议,找到凹凸贴图所需的每个顶点切线..... – hurricane 2012-01-24 15:39:17
@hurricane这肯定会值得另一个问题,但首先你可以看看[这里](http: //www.terathon.com/code/tangent.html)和[这里](http://fabiensanglard.net/bumpMapping/index.php)。这个想法是计算每个三角形的切线和双切线(因为它们每个三角形都是不变的,并且取决于三角形顶点的纹理坐标),然后平均每个顶点所有相邻三角形的切线。 – 2012-01-24 15:54:45
@hurricane那么高光贴图现在能够正确工作吗?如果是,投票和接受总是赞赏。如果没有,请随时更新您的问题或写评论。 – 2012-01-24 16:03:21