Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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++_Shader_Render_Opengl 3_Sdl 2 - Fatal编程技术网

C++ 在中心位置渲染模型不显示(已修改)

C++ 在中心位置渲染模型不显示(已修改),c++,shader,render,opengl-3,sdl-2,C++,Shader,Render,Opengl 3,Sdl 2,目前,我可以从DAE文件加载地球模型,而不需要纹理,只是为了显示屏幕上有什么东西。为此,我使用了GLU。 但是现在我尝试使用GLM和着色器来加载带有纹理的模型。我遇到的问题是正确地让它们一起工作来显示模型 修订版 在被指出我需要VAOs来渲染场景后,我决定使用前面提到的中的一个示例。我编译了教程,它可以正常工作,但它是过量的。因此我提取了与加载模型相关的重要部分,并将它们实现到我的项目中。经过一些调试后,我成功地完成了比前面描述的更多的工作,但仍然没有显示任何内容。在来回查看我可能遗漏的内容后,

目前,我可以从DAE文件加载地球模型,而不需要纹理,只是为了显示屏幕上有什么东西。为此,我使用了GLU。

但是现在我尝试使用GLM和着色器来加载带有纹理的模型。我遇到的问题是正确地让它们一起工作来显示模型

修订版

在被指出我需要VAOs来渲染场景后,我决定使用前面提到的中的一个示例。我编译了教程,它可以正常工作,但它是过量的。因此我提取了与加载模型相关的重要部分,并将它们实现到我的项目中。经过一些调试后,我成功地完成了比前面描述的更多的工作,但仍然没有显示任何内容。在来回查看我可能遗漏的内容后,我无法准确指出确切的问题。我确保程序正在读取值并进行适当的检查,以证明该过程是有效的,没有打嗝,但由于某种原因,我无法显示任何内容。我已经改变了背景颜色,以检查是否只有地球模型的轮廓,但屏幕上仍然没有渲染任何东西

我所做的是提供一份我所做的。一切都显示出适当的价值。如果你比较一下教程和我的,你会发现它是一样的,除了我的硬编码相机位置和目标指向模型所在的位置之外,没有什么不同。但我不知道在这个过程中我可能遗漏了什么

(非到期)

OnInit()中的所有内容都将通过。但是当谈到
OnRender()
时,有些地方不对劲

与教程没有什么不同

除了类名,与教程没有区别

着色器和着色器程序。与教程没有什么不同


技术班的孩子。获取制服等。主要问题似乎在片段定义中:

fragData = color * texture(tex, TexCoord); 
其中颜色定义为统一颜色。在主程序中,您没有给它分配任何值,因此,它被初始化为零,这使得任何片段都是黑色的。帧缓冲区背景的相同颜色

尽管如此,您的代码仍存在其他问题。首先,您正在使用许多不推荐使用的函数,这些函数在核心概要文件(v3.3)中没有任何影响

其次,您需要分配一个VAO(顶点数组对象),以便能够看到任何东西

最后,有些函数似乎没有任何效果,例如:

glm::translate(view, glm::vec3(0.f, 0.f, -20.f)); // <-----------

// Draw model
m_model.Render();

glm::translate(视图,glm::vec3(0.f,0.f,-20.f));//你检查过cam变量了吗?@SAKrisT是的。相机被设置为20个单位之外,并对准中心。Model::Render()内部发生了什么?@glampert我已经更新了它,显示了它应该如何绘制。我可以发现两件事:1)你忽略了着色器中的第三个顶点元素。但这不太可能是你的问题。2) 您没有使用顶点数组对象(VAO),我很确定这是核心OpenGL渲染所必需的。也许看看:我不得不修改这个问题。现在应该更清楚地了解正在发生的事情。