【问题标题】:Tiling subtexture over 3D shape in OpenGL在 OpenGL 中平铺 3D 形状的子纹理
【发布时间】:2012-08-15 09:06:29
【问题描述】:

我有一个纹理,它是一个由较小纹理组成的网格,我无法在此应用程序中将其拆分为单个文件。我需要将这些子纹理平铺在模型上。

分割几何体可能有效,但会增加场景复杂性,如果生成细三角形,可能会引入视觉伪影。

在运行时分配从原始纹理复制的新纹理可能会起作用,但会增加纹理内存使用量,并且如果主要纹理发生变化(我无法在此应用程序中检测到),则会涉及陈旧数据。

如果真的没有办法直接绑定子纹理以允许 OpenGL 平铺工作,那么下一个最好的方法是什么?

【问题讨论】:

  • 您可以使用片段着色器程序将纹理坐标转换为子纹理的查找。
  • 这似乎太过分了,可能会干扰应用程序现有的渲染管道,除非有一种简单的方法可以单独完成这一特定的事情。

标签: java opengl 3d textures tiling


【解决方案1】:

如果你需要这样做,正确的方法是使用片段着色器直接平铺你的纹理坐标。

这似乎太过分了,可能会干扰应用程序现有的渲染管道

它会干扰的唯一方法是如果您不使用片段着色器。如果你不是……你应该是。

现代硬件设计通常不再添加固定功能;这一切都是为了给着色器更多的权力和选择。如果您需要某个功能,“在着色器中编码”通常是正确的解决方案。

但如果您不允许使用着色器,唯一的选择就是按照您的建议修改几何图形。

【讨论】:

  • 我认为值得一试,然后看看是否可以将这样的东西添加到应用程序中而不会弄乱工作。如果您能提供比 Google 更有针对性的起点,我将不胜感激,因为我怀疑我现在是否真的有时间和资源来学习解决这个问题的整个着色器子系统。
  • @JAKJ,有一个名为ShaderGen 的工具可以自动生成着色器代码来复制固定功能管道的工作原理。由于缺少合适的 Windows 安装,我自己从未真正使用过它,但作为起点可能值得一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
相关资源
最近更新 更多