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

Render model at center position not displaying (revised)

本文关键字:修改 显示 位置 模型 在中心      更新时间:2023-10-16

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

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

修订

在有人指出我需要VAO来渲染场景后,我决定使用ogldev的教程32中关于顶点阵列对象的前面提到的例子我编译了教程,它正常工作,但它是GLUT因此,我提取了与加载模型相关的重要部分,并将它们实现到我的项目中。经过一些调试,我已经设法比前面描述的更进一步,但仍然没有任何结果。在反复思考我可能错过了什么之后,我无法确定确切的问题。我确保程序正在读取值并进行适当的检查,以表明该过程是有效的,没有任何问题,但由于某种原因,我无法显示任何内容。我已经改变了背景颜色,以检查是否只有地球模型的剪影,但屏幕上仍然没有任何东西。

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

(不过期)

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

PipeLine.cpp与教程没有什么不同。

模型.cpp除了类名,与教程没有什么不同。

技术.h&cpp着色器和着色器程序。与教程没有什么不同。

照明.h&cpp技术班的孩子。获取制服等。

主要问题似乎出现在您的片段定义中:

fragData = color * texture(tex, TexCoord); 

其中颜色被定义为均匀。在主程序中,您没有为它分配任何值,因此,它被初始化为零,这使得任何片段都是黑色的。与帧缓冲区背景颜色相同。

尽管如此,您的代码仍存在其他问题。首先,您使用了许多不推荐使用的函数,这些函数在核心配置文件(v3.3)中没有效果

其次,您需要分配一个VAO(顶点阵列对象)才能看到任何东西。

最后,有些功能似乎没有任何效果,例如:

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

如果您提供render函数的实现,将更容易帮助您。