2

可能重复:
渲染具有多个索引的网格

在我的应用程序中,我有很多使用相同的顶点缓冲区渲染的四边形,我通过擦除重复的顶点和使用索引来优化它,就像正常的一样。问题是这些四边形的纹理坐标不是连续的,它们实际上都使用相同的纹理坐标,实际上只是(0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0)一遍又一遍(真是浪费)。渲染时,第一个四边形没问题,但后面的四边形使用了错误的纹理坐标,因为它们重用了重用顶点中的那些,而与第一个相邻的第二个四边形使用此坐标 (1.0,1.0, 0.0 ,1.0, 1.0,1.0, 0.0,1.0) 而不是前者,这显然不好。

我想要的是这样的:

(两个四边形和纹理坐标)
| 0,0 0,1 | 0,0 0,1 |
| 1,0 1,1 | 1,0 1,1 |

但相反,我得到了这个:

| 0,0 0,1 | 0,1 0,1 |
| 1,0 1,1 | 1,1 1,1 |

这很正常,只是我没有预料到它,因为我在顶点和索引之后做了纹理的东西,而且我更习惯于普通模型..

我想知道是否有一种方法可以有效地做到这一点,因为我开始认为唯一的方法是避免使用索引并重复所有这些顶点或使用实例化(我不想使用)。这些只是两个四边形,但我的应用程序在任何给定时间都有很多四边形,使用索引会在内存使用方面产生巨大差异。另外,我想知道是否有某种方法可以摆脱所有那些重复的纹理坐标并只使用它们一次,而不是 10000 次,因为这看起来很浪费内存。它只是使用相同的缓冲区使用相同的纹理坐标有效地渲染一堆单独的四边形,谢谢!

4

0 回答 0