Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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
OpenGL相机/投影 我尝试用C++和OpenGL实现一个小型渲染系统。我以前已经实现了一个,但现在我正试图改变它背后的结构,所以我要重新开始_C++_Opengl_Projection_Glm Math - Fatal编程技术网

OpenGL相机/投影 我尝试用C++和OpenGL实现一个小型渲染系统。我以前已经实现了一个,但现在我正试图改变它背后的结构,所以我要重新开始

OpenGL相机/投影 我尝试用C++和OpenGL实现一个小型渲染系统。我以前已经实现了一个,但现在我正试图改变它背后的结构,所以我要重新开始,c++,opengl,projection,glm-math,C++,Opengl,Projection,Glm Math,我已经有点困了, 因为投影/摄像机有错误,但我就是找不到。 在Z方向上没有移动,我认为剪切平面被弄乱了,因为沿着前向向量移动只会操纵渲染的部分,而不会操纵到对象的距离(或对象的大小)。这就是为什么我认为我的投影有问题的原因 这就是我使用glm设置矩阵的方法 m_view = glm::lookAt(m_pos, m_pos + m_forward, m_up); m_projection = glm::perspective(m_fov, (float)Engine::getInstance(

我已经有点困了, 因为投影/摄像机有错误,但我就是找不到。 在Z方向上没有移动,我认为剪切平面被弄乱了,因为沿着前向向量移动只会操纵渲染的部分,而不会操纵到对象的距离(或对象的大小)。这就是为什么我认为我的投影有问题的原因

这就是我使用glm设置矩阵的方法

m_view = glm::lookAt(m_pos, m_pos +  m_forward, m_up);
m_projection = glm::perspective(m_fov, (float)Engine::getInstance()->getWindowWidth()/(float)Engine::getInstance()->getWindowHeight(), 0.1f, 1000.0f);
这就是我的顶点着色器

#version 330 core


uniform mat4 model; 
uniform mat4 view; 
uniform mat4 projection;
varying vec4 worldPos;

layout (location = 0) in vec3 position;

void main()
{
    worldPos =   projection*view *  model   * vec4(position, 1.0);
    gl_Position = vec4(worldPos.x, worldPos.y, worldPos.z, 1.0);
}
这就是我设置制服的方式

 glUniformMatrix4fv(m_uniforms[VIEW_U],1,GL_FALSE,glm::value_ptr(view_matrix) );
只有在初始化GLEW时才会抛出错误,但从我读到的内容来看,可以忽略该错误

我知道这只是一小部分代码,但整个代码都可以在我的github项目中找到

这里是我的项目的链接。 为了消除潜在的错误源,我从中提取了一部分代码

我知道这是很基本的东西,但我找不到我的错误。 谢谢你的时间

图为电流输出。但是应该有一些小立方体

顶点着色器错误。我正确地计算了worldPos,然后再次将其转换为w为1.0的vec4,这导致了错误

    gl_Position =   projection*view *  model   * vec4(position, 1.0f);

顶点着色器错误。我正确地计算了worldPos,然后再次将其转换为w为1.0的vec4,这导致了错误

    gl_Position =   projection*view *  model   * vec4(position, 1.0f);