2012-08-14 68 views
0

3D形状我有一个质地是更小的纹理和我不能在此应用程序分割成单个文件的网格。我需要在模型上平铺这些子文本。平铺subtexture在OpenGL中

分割几何能正常工作,但会增加场景复杂度和潜在如果产生薄的三角形引入视觉假象。

在运行时间从原来的复制分配新的纹理可以工作,但会增加纹理内存的使用情况,并会涉及陈旧的数据,如果主要结构的变化(这是我不能在此应用程序检测)。

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

+0

您可以使用片段着色器程序将纹理坐标转换为子纹理的查找。 – MvG 2012-08-14 21:25:22

+0

这似乎是大规模的矫枉过正,并可能干扰应用程序的现有渲染管道,除非有一种简单的方法来孤立地执行这个特定的事情。 – JAKJ 2012-08-14 21:32:56

回答

1

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

这似乎是巨大的矫枉过正,可能与应用程序的现有渲染管线

它会干扰的唯一方式干扰是,如果你不使用片段着色。如果你不是......你应该。

现代硬件设计通常不会再增加固定功能;这完全是为了给shader更多的功能和选择。如果你需要一个功能,“在着色器中编码”通常是正确的解决方案。

但是,如果你不能使用着色器,唯一的办法是修改你的几何图形,如你所说。

+0

我想这是值得的,然后,看看这样的东西是否可以添加到应用程序中,而不会弄坏作品。如果您能够提供比Google更直接的出发点,我将不胜感激,因为我怀疑我现在真的有足够的时间和资源来学习整个着色器子系统来解决这个问题。 – JAKJ 2012-08-15 02:33:52

+0

@JAKJ,有一个名为[ShaderGen](http://www.mew.cx/glsl/shadergen/)的工具,它自动生成着色器代码以复制固定功能管道的工作。缺乏合适的Windows安装,我从来没有真正使用它,但它可能是值得一试的起点。 – MvG 2012-08-15 08:08:38