Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模型视图投影会导致失真_C#_Opengl_Opentk - Fatal编程技术网

C# 模型视图投影会导致失真

C# 模型视图投影会导致失真,c#,opengl,opentk,C#,Opengl,Opentk,在我的世界里,我有一个立方体,每帧平移0.0f,0.01f,0.0f,但这会导致立方体移动 我99%确信这是MVP的一个问题,我是如何设置它的,乘以变量或者其他与之相关的因素。这就是我设置每个变量的方式,模型矩阵在每帧更新时发送到着色器,而摄影机和投影矩阵在窗口加载时发送一次 资料来源: 摄像机、投影和模型矩阵 m_cube_matrix = Matrix4.Identity; m_camera = Matrix4.LookAt(new Vector3(2.0f, 2.0f, -1.5f),

在我的世界里,我有一个立方体,每帧平移0.0f,0.01f,0.0f,但这会导致立方体移动

我99%确信这是MVP的一个问题,我是如何设置它的,乘以变量或者其他与之相关的因素。这就是我设置每个变量的方式,模型矩阵在每帧更新时发送到着色器,而摄影机和投影矩阵在窗口加载时发送一次

资料来源:

摄像机、投影和模型矩阵

m_cube_matrix = Matrix4.Identity;

m_camera = Matrix4.LookAt(new Vector3(2.0f, 2.0f, -1.5f), new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f));
int _u_camera = GL.GetUniformLocation(m_shader.m_shader_program_id, "uCamera");
GL.UniformMatrix4(_u_camera, false, ref m_camera);

m_projection = Matrix4.CreatePerspectiveFieldOfView(1.5f, 800.0f / 600.0f, 0.1f, 10.0f);
int _u_projection = GL.GetUniformLocation(m_shader.m_shader_program_id, "uProjection");
GL.UniformMatrix4(_u_projection, false, ref m_projection);
顶点着色器

#version 330

uniform mat4 uModel;
uniform mat4 uCamera;
uniform mat4 uProjection;

in vec3 vPosition; 
in vec3 vNormal;

out vec3 oNormal;
out vec3 oPosition;

void main(void)
{
   gl_Position = uProjection * uCamera * uModel * vec4(vPosition, 1);

   oNormal = normalize(gl_NormalMatrix * vNormal);
   oPosition = vPosition;
}  

你的变换矩阵被转置了

您对所有矩阵使用相同的矩阵函数,但将
m_cube_矩阵
作为转置发送到GL,而不对所有其他矩阵执行此操作

从您的代码:

GL.UniformMatrix4(_u_model, true, ref m_cube_matrix);
//                          ^^^^ you are transposing your matrix here

我回答了您的问题,但是您仍然应该编辑问题以提供相关的代码部分,或者直接内联一些视频中的静态图像。