Я уже несколько дней пытаюсь настроить камеру в OpenGL, но просто не могу заставить ее работать должным образом. По мере того, как значение eye.X или eye.Y увеличивается / уменьшается, вместо того, чтобы «смотреть вокруг», камера (я знаю, что нет такой вещи, как камера ...) удаляется / приближается к чертежам!
Надеюсь, что следующая информация может вам помочь. (Я также загрузил видео, в котором показана ошибка): https://www.youtube.com/watch?v=OlD5X0EzkUw
Эти мои вычисления ModelView для OnUpdateFrame .
_worldPosition = Matrix4.CreateTranslation(_worldX, _worldY, _worldZ);
_cameraMatrix = Matrix4.LookAt(eye.X, eye.Y, eye.Z, center.X, center.Y, center.Z, up.X, up.Y, up.Z);
_modelViewMatrix = _worldPosition * _cameraMatrix;
Здесь я настраиваю значения с помощью функции OnMouseMove :
if (_mouseDown)
{
_mousePos.X = 2.0f * Mouse.X / Width - 1;
_mousePos.Y = 2.0f * Mouse.Y / Width - 1;
_mouseDeltaY = (_mousePosOld.Y - _mousePos.Y) / 10;
_mouseDeltaX = (_mousePosOld.X - _mousePos.X) / 10;
eye.X -= _mouseDeltaX;
eye.Y -= _mouseDeltaY;
}
И, наконец, мой Вершинный шейдер :
#version 440 core
layout (location = 0) in vec4 position;
layout(location = 1) in vec4 color;
layout(location = 2) uniform mat4 projectionMatrix;
layout (location = 3) uniform mat4 modelViewMatrix;
out vec4 vs_color;
void main(void)
{
gl_Position = projectionMatrix * modelViewMatrix * position;
vs_color = color;
}