我需要知道如何渲染许多不同的3D模型,它们将几何图形更改为每个框架(都是动画模型),不要重复模型和纹理。
我携带所有模型,并为每个模型创建了一个“对象”模型类。
渲染它们的最佳方式是什么?
我在Windows上使用OpenGL 3.x或更高版本,C ++。
答案 0 :(得分:5)
为什么?这取决于获取数据,转换数据,将其推送到GPU然后使屏幕上的像素闪烁的复杂过程。因此,不是“一种最佳方式”,而是出现了一些可能通常可以提高性能的指导性。
:)
) 现在,显而易见的是,如果你想要一个会改变的模型,你就不能拥有蛋糕并吃掉它。你必须做出权衡。简而言之,动态对象永远不会像静态对象那样快速渲染。那么,你应该怎么做?
GL_STREAM_DRAW
或GL_DYNAMIC_DRAW
) - 这应保证最佳的内存排列。最后但并非最不重要的是,始终仔细衡量您的变更对效果的影响。盲目行事无济于事。准确测量并彻底(甚至像着色器编译时间这样的东西有时也很重要!)。然后,即使你经过反复试验,也有希望你能到达某个地方。
特别提到你的一点;它是一个大的VBO还是一些较小的VBO并不重要,但是一个巨大的VBO可能在内存中存在问题。你仍然可以更新它的一部分,最重要的是里面的内存安排。