第 16 课:Rotation About a Point
我的解
cbuffer Uniforms : register(b0) {
float iTime;
float4x4 viewMatrix;
float4x4 projectionMatrix;
};
struct VSInput {
float3 position : Position;
};
struct VSOutput {
float4 position : SV_Position;
};
VSOutput main(VSInput input) {
VSOutput output;
// setPosition2D
float2 pos2D = input.position +float2(0.0,2.0);
float2 disp = (pos2D - float2(0.0,0.0));
float delta = iTime;
float rotatedX = disp.x * cos(delta) - disp.y * sin(delta);
float rotatedY = disp.y * cos(delta) + disp.x * sin(delta);
float2 rotated = float2(rotatedX, rotatedY)+float2(0.0,0.0);
float4 viewPos = mul(viewMatrix, float4(rotated, 0.0, 1.0));
output.position = mul(projectionMatrix, viewPos);
return output;
}