最重要的是,我正在使用Android上的OpenGL ES 2.0。
表面和高度纹理由具有Simplex噪声算法的线程CPU生成。 我绘制一个球体,我想根据与观察者的距离(LOD)来映射纹理。 我确切地说,地图生成器使用所需的球形变形渲染2D纹理(基于3D噪声)以进行精细映射。
仅映射一个纹理(票价距离)效果非常好。现在,我想基于眼睛到球体中心向量来映射(并生成)纹理。 想象一下在球体中间的一个正方形(我的纹理),每当我旋转球体或移动时,正方形必须始终在观察者面前居中。只有内容被更改。
从哪里开始?
我只能让它与偏航旋转一起工作..如果我修改其他人(俯仰,滚动),所有都会被打破。
我正在研究另一种(最佳)方法吗?
纹理映射的实际着色器代码(仅适用于偏航):
vec4 S = INVERTED_VIEW_MATRIX * vec4(sphere.nadir, 1.0);
vec4 d = normalize(WORLD_POSITION - S);
d = TEXTURE_ROTATE_MATRIX * d;
float u = 0.5 - (atan(d.z, d.x) / (2.0 * PI));
float v = 0.5 - (2.0 * (asin(d.y) / (2.0 * PI)));
谢谢你,对不起我的英语很差。