Я делаю тест 3D-графики "нетекстурированные кубики на синем экране", используя правые координаты. Однако они выглядят странно обрезанными или искаженными (в Orthographic левая сторона дисплея заканчивается раньше, чем окно; в перспективе это выглядит так, будто дисплей растягивается от заднего левого к переднему правому).
Не уверен, в чем проблема на самом деле, но матрицы проекций, кажется, хорошее место для начала.
Те, что я использую сейчас:
// Went back to where I found it and found out this is a
// left-handed projection. Oops!
public static Matrix4x4 Orthographic(float width, float height,
float near, float far)
{
float farmnear = far - near;
return new Matrix4x4(
2 / width, 0, 0, 0,
0, 2 / height, 0, 0,
0, 0, 1 / farmnear, -near / farmnear,
0, 0, 0, 1
);
}
// Copied from a previous project.
public static Matrix4x4 PerspectiveFov(float fov, float aspect,
float near, float far)
{
float yScale = 1.0F / (float)Math.Tan(fov / 2);
float xScale = yScale / aspect;
float farmnear = far - near;
return new Matrix4x4(
xScale, 0, 0, 0,
0, yScale, 0, 0,
0, 0, far / (farmnear), 1,
0, 0, -near * far / (farmnear), 1
);
}
Спасибо