Я пытаюсь перевести свой игровой движок с Java с LWJGL 3 на C # с OpenTK (OpenGL 3+).Пока что я могу нарисовать треугольник с текстурой.Однако, когда я пытаюсь загрузить матрицу проекции в шейдер, она не работает.Вот что я пробовал:
-Загрузить равномерное число с плавающей точкой в шейдер - Работает
-Загрузить только единичную матрицу без перспективы - РАБОТАЕТ
-Не умножать вершину на проекцию - Работает
-Создать проекцию вручную - не работает
Вот код:
//At the top of class
Matrix4 projection;
//In render method
projection = Matrix4.Identity;
projection = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 4,
1280 / 720, 1f, 100f);
int loc = GL.GetUniformLocation(progId, "projection");
GL.UniformMatrix4(loc, false, ref projection);
//Other render stuff
Vertex Shader:
#version 330 core
layout (location = 0) in vec3 pos;
layout (location = 1) in vec2 uv;
out vec2 frag_uv;
uniform mat4 projection;
void main()
{
gl_Position = projection * vec4(pos, 1.0);
frag_uv = uv;
}
Как я уже сказал, я думаю, что униформа загружена правильнопотому что когда я удаляю метод CreatePerspectiveFOV, треугольник появляется снова.Я использую Visual Studio 2017.