我的相机存在一些问题,即使我将它设置为0.1或更低,近平面似乎也太远了。似乎已经存在一些抵消价值。所以你无法真正接近场景中的任意对象。
显示的黑色三角形是剪辑。 目前我正在使用透视矩阵,这里是代码。
Matrix4x4 Matrix4x4::Perspective(Float fov, Float aspectRatio, Float near, Float far)
{
Matrix4x4 result(1.0f);
Float q = 1.0f / tan(toRadians(0.5f * fov));
Float a = q / aspectRatio;
Float b = (near + far) / (near - far);
Float c = (2.0f * near * far) / (near - far);
result.elements[0 + 0 * 4] = a;
result.elements[1 + 1 * 4] = q;
result.elements[2 + 2 * 4] = b;
result.elements[2 + 3 * 4] = -1.0f;
result.elements[3 + 2 * 4] = c;
return result;
}
我觉得这个bug来自数学课。这是因为数学代码主要来自我一直在研究的另一个项目。从那里工作完美。 我也不怀疑它是我呈现它的方式(前向渲染器)。我相信我的指示很好,因为我可以通过鼠标和键盘移动和旋转相机。
但是!我怀疑的是缓冲区。 OpenGL缓冲区。但我不完全确定。
我希望有人能就如何捕捉和解决这个问题向我提出一些建议。
提前谢谢。