繁体   English   中英

纹理如何映射到3D对象?

[英]How are textures mapped to 3D objects?

我目前正在学习C ++和OpenGL,想知道下面的代码如何将纹理映射到场景中的3D对象。 该代码当前有效,但是我正在努力理解它。

//In the Pixel Shader.
float pi = 3.14159265359;
vec3 N = normalize (Normal);
vec3 L = normalize (vec3 (EyeSpaceLightPosition - EyeSpacePosition));
vec3 R = reflect (L, N);
vec3 V = normalize (vec3 (EyeSpacePosition) - vec3 (0, 0, 0));


//Specifically these parts here.
float theta = acos (dot ( N, L )) / pi;
float phi = acos (dot ( -R, V )) / pi;
fragColor = vec4 (texture (texture1, vec2 ( theta, phi ))); 

acos (dot ( N, L ))获得向量NL之间的角度,该角度将以弧度表示,因此需要除以pi才能达到texture()期望的范围。

所有实际的纹理魔术都在这里发生

fragColor = vec4 (texture (texture1, vec2 ( theta, phi ))); 

texture()将在其第二个参数定义的位置的第一个参数中对纹理进行采样,并将颜色值作为包含颜色成分(红色,绿色,蓝色和alpha色)的vec4返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM