gpt4 book ai didi

c++ - 如何在顶点着色器外将顶点与模型矩阵相乘

转载 作者:行者123 更新时间:2023-11-28 06:01:45 26 4
gpt4 key购买 nike

我正在使用 OpenGL ES2 来渲染相当多的大部分 2d 项目,到目前为止,我已经通过将预乘模型/ View /投影矩阵作为统一发送到顶点着色器,然后将我的顶点与结果相乘来摆脱困境那里有 MVP。

所有项目都使用纹理图集进行批处理,我每批使用一个 MVP。所以我所有的顶点都与那个 MVP 的平移相关。

现在我想对每个单独的项目进行旋转和缩放,这意味着我需要为每个项目使用不同的模型。所以我修改了我的顶点以包含模型(16 个 float !)并在我的着色器中添加了一个 mat4 属性并且一切正常。但我对这个解决方案有点失望,因为它显着增加了顶点大小。

所以当我盯着我的屏幕试图想出一个不同的解决方案时,我想到了在我将它们发送到着色器之前将我的顶点转换到世界空间。如果可能的话,甚至到屏幕空间。我使用的顶点是以像素为单位的非标准化坐标。

那么问题来了,这样的事情可能吗?如果是的话,你是怎么做到的?我想不通为什么不应该这样做,因为它只是数学,但在谷歌上进行了相当长时间的搜索后,看起来并没有很多人真正这样做......

奇怪的是,如果确实有可能,在这种情况下这将是一个相当大的优化。

最佳答案

如果每批处理的矩阵数量有限,那么您可以将所有这些矩阵作为统一传递(最好在 UBO 中)并使用指定您需要使用的矩阵的索引扩展顶点数据。

这类似于用于 skeletal animation 的 GPU 蒙皮.

关于c++ - 如何在顶点着色器外将顶点与模型矩阵相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33150186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com