据我所知,每个顶点指定法线,而在OpenGL中,"顶点"不仅指空间中的点,还指其相关的法线(以及其他一些数据).对于诸如面部成直角的立方体的模型,这将是有问题的,因为每个几何顶点需要3个法线,每个面一个法线.显而易见的解决方案似乎只是为每个面指定4个不同的顶点和适当的法线(即不要在面之间共享顶点),但这种方法似乎非常浪费.有没有更好的方法让我实际上共享顶点位置而不共享法线?
正如您所写,顶点是位置,法线,纹理坐标等的整个向量.
如果这些属性中只有一个不同,那么它就是一个完全不同的顶点.
但这种做法似乎非常浪费.
不同的属性,不同的顶点.这不是一个难以理解的概念.现代GPU采用顶点缓存,该顶点缓存使用顶点属性作为顶点变换阶段的缓存输出的关键字.如果可以进行属性共享,则无法以高效的方式实现此缓存.
有没有更好的方法让我实际上共享顶点位置而不共享法线?
你为什么想这么做?具有不同法线的顶点是不同的顶点.试图节省一点内存会打开一大堆蠕虫.不仅用于缓存,还用于程序的其他部分.
单独的顶点具有单独的法线实际上是一件好事.
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |