У меня возникают некоторые проблемы с моей камерой, где ближайший самолет кажется слишком далеко, даже если у меня он установлен на 0,1 или ниже. Похоже, что уже есть некоторая величина смещения. Таким образом, вы не можете получить достаточно близко к произвольному объекту в сцене.OpenGL рядом с плоскостью слишком сильно обрезается
Ниже представлен внешний вид ошибки.
Показанный черный треугольник является отсечением. В настоящее время я использую перспективную матрицу, и вот код для этого.
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;
}
Я не чувствую, что ошибка связана с классом математики. Это связано с тем, что математический код в основном связан с другим проектом, над которым я работал. И отлично работает оттуда. Я также не подозреваю, что это так, как я его визуализую (передний рендер). Я считаю, что мои указатели на это хорошие, так как я могу перемещать и поворачивать камеру с помощью мыши и клавиатуры.
Но! Я подозреваю, что это буферы. Буферы OpenGL. Но я не совсем уверен.
Я надеюсь, что кто-то даст мне несколько советов относительно того, как я могу охотиться и бороться с этой ошибкой.
Заранее спасибо.
в первую очередь, вы должны будете предоставить все другие преобразования, кроме матрицы проекции (View, Мир, и все, что еще у вас есть). Очевидно, необходим вершинный буфер для куба – Ap31
У вас есть ключ к вопросу о том, какая проблема может быть? – JekasG
@JekasG: Ваш куб может просто выйти за пределы Z <= рядом, но мы не можем сказать это, не видя настройки преобразования и вершины куба. Вы смотрите на куб по его диагонали, длина которого удлиняется на коэффициент sqrt (3 * 1²) = sqrt (3) = ~ = 1.73'. – datenwolf