【问题标题】:Storing a triangle texture in vram with OpenGL使用 OpenGL 在 vram 中存储三角形纹理
【发布时间】:2011-11-16 11:31:48
【问题描述】:

有什么方法可以存储和绘制三角形纹理,而无需创建矩形缓冲区(并且使用的存储空间是我需要的两倍)。

(我知道我可以将很多三角形打包成一个大的矩形纹理,但我想看看是否有办法做到这一点,而不必浪费任何空间或编写复杂的打包算法)

【问题讨论】:

  • 什么是“矩形缓冲区”?
  • @NicolBolas 常规纹理(矩形或正方形)。

标签: opengl language-agnostic graphics 3d


【解决方案1】:

不,但您可以尝试使用这种相当简单的算法来解开纹理 UV,如下所示:

|\
|1\
|__\
|   \
| 2  \
-------

 _____
|   \1|
| 2  \|
-------

通过切割三角形的顶部 (1) 创建一个矩形 POT 纹理,并将其放置在靠近其底部的空闲空间中 (2)。

【讨论】:

  • 好吧,创建的不连续性肯定会在以后的纹理处理中造成麻烦。我们当然可以实现一个片段着色器,基于直接纹理元素访问并手动进行插值和过滤颤抖
  • 是的。这种解决方案需要某种自动化。例如地图/多边形可以提前生成。似乎没有其他解决方案,因为没有硬件支持三角形纹理;)
【解决方案2】:

在这种情况下,通常的做法是将多个奇怪的形状打包到一个矩形纹理上(它们需要彼此分开,以便采样不会从相邻形状中渗出颜色......)。如果你为你的三角形使用多个纹理,你也可以用这种方式打包它们。

如果您只有一个纹理,那么浪费空间可能是最简单的方法——很可能,您的应用程序不是特别占用资源?

【讨论】:

    【解决方案3】:

    据我所知,OpenGL 和任何扩展都不支持您正在寻找的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      相关资源
      最近更新 更多