我目前正在制作飞行游戏,它完全在片段着色器中处理基于perlin的岛渲染,因此我可以根据需要缩小。我现在想渲染像草一样的小细节作为着色器中的对象,因为使用四边形渲染它们在较大的缩放级别上会表现得过于沉重。
我唯一的问题是,我似乎无法弄清楚如何处理相机旋转,因此我的物体总是像广告牌那样面向相机。我将如何实现这一目标?
截图:
代码:
pos -= vec2(0.5);
pos = rotate(pos, CameraRotation);
pos += vec2(0.5);
vec2 fraction = vec2(fract(pos.x), fract(pos.y));
vec4 texColor = texture2D(tex, fraction);
我的旋转功能:
vec2 rotate(vec2 position, float degrees)
{
float rotation = degrees * Pi / 180.0f;
float rx = position.x * cos(rotation) - position.y * sin(rotation);
float ry = position.x * sin(rotation) + position.y * cos(rotation);
return vec2(rx, ry);
}
提前感谢您提供任何帮助!
答案 0 :(得分:0)
如果您希望矩阵不旋转顶点,则需要采用模型 - 视图矩阵并将左上角3 * 3部分设置为3 * 3单位矩阵,因为这是处理旋转的位置。 / p>