Java OpenGL中三维图形上的子纹理平铺

Java OpenGL中三维图形上的子纹理平铺,java,opengl,3d,textures,tiling,Java,Opengl,3d,Textures,Tiling,我有一个纹理,它是由更小的纹理组成的网格,在这个应用程序中,我无法将其拆分为单个文件。我需要在模型上平铺这些潜台词 分割几何体可能会起作用,但会增加场景的复杂性,并可能在生成薄三角形时引入视觉瑕疵 在运行时分配从原始纹理复制的新纹理可能会起作用,但会增加纹理内存的使用,并且如果主纹理发生变化(我在这个应用程序中无法检测到),会涉及陈旧的数据 如果确实没有办法直接绑定子纹理以允许OpenGL平铺工作,那么下一个最好的方法是什么?如果需要这样做,正确的方法是使用片段着色器直接平铺纹理坐标 这看起来像

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

分割几何体可能会起作用,但会增加场景的复杂性,并可能在生成薄三角形时引入视觉瑕疵

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


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

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


这看起来像是大刀阔斧,可能会干扰应用程序现有的渲染管道

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

现代硬件设计一般不再增加固定功能;这一切都是为了赋予着色器更多的功能和选项。如果需要功能,“在着色器中编码”通常是正确的解决方案


但是,如果不允许使用着色器,唯一的替代方法是按照您的建议修改几何体。

您可以使用片段着色器程序将纹理坐标转换为子纹理的查找。这看起来像是过度使用,可能会干扰应用程序现有的渲染管道,除非有一种简单的方法来单独完成这一特定的事情,否则我认为值得一试,看看这样的事情是否可以添加到应用程序中,而不会破坏工作。如果你能提供一个比谷歌更直接的起点,我将不胜感激,因为我怀疑我现在是否真的有时间和资源来学习这个问题的整个着色器子系统。@JAKJ,有一个工具称为自动生成着色器代码来复制固定功能管道的工作。由于没有合适的Windows安装,我自己从来没有实际使用过它,但作为一个起点,它可能值得一试。