【发布时间】:2015-10-15 13:41:56
【问题描述】:
我正在使用 OpenGL ES2 来渲染相当多的大部分 2d 项目,到目前为止,我已经通过将预乘模型/视图/投影矩阵作为统一发送到顶点着色器然后将我的顶点与结果相乘来摆脱困境MVP 在那里。
所有项目都使用纹理图集进行批处理,我每批使用一个 MVP。所以我所有的顶点都与那个 MVP 的平移有关。
现在我想对每个单独的项目进行旋转和缩放,这意味着我需要为每个项目使用不同的模型。所以我修改了我的顶点以包含模型(16 个浮点数!)并在我的着色器中添加了一个 mat4 属性,这一切都很好。但我对这个解决方案有点失望,因为它显着增加了顶点大小。
所以当我盯着屏幕试图想出一个不同的解决方案时,我考虑在将顶点发送到着色器之前将它们转换为世界空间。如果可能的话,甚至可以屏蔽空间。我使用的顶点是以像素为单位的非标准化坐标。
所以问题是,这样的事情可能吗?如果是的话,你怎么做?我想不出为什么它不应该是因为它只是数学但是在谷歌上搜索了相当长的时间之后,看起来很多人实际上并没有这样做......
奇怪的原因,如果确实有可能,在这种情况下,这将是一个相当大的优化。
【问题讨论】: