如何在OpenGL中将多个纹理分配到单个网格中?

3
第一个例子: 您可以使用大型岩石网格,并在其上放置平铺的岩石纹理。现在,一些地方需要用草纹理(或其他植被)覆盖。
另一个例子: 通常,地形是由平铺纹理构建的。为了实现更少“tilly”的外观,您可以将4倍(或16倍等)平铺纹理应用于其中,从而获得漂亮的“随机”平铺纹理(在UDK文档中看到过)。
Blender(3D图形应用程序)基于OpenGL,并允许您将多个材料分配给单个网格。
如何在我的OpenGL应用程序中实现它? 谢谢, 阿米尔
附言: 我正在寻找比渲染50个三角形使用tex a和3个三角形使用tex b更好的解决方案。
1个回答

1
你要找的是叫做“多重纹理”。现代图形卡有几个纹理单元,每个单元可以采样不同的纹理。当你渲染你的岩石时,你需要为每个要渲染的纹理指定具有UV坐标的顶点。
在OpenGL中,你可以使用glActiveTexture选择你的活动纹理单元,以便你可以将纹理绑定到它并在随后的渲染中使用它。你的顶点将需要额外的纹理坐标对;每个要渲染的纹理一个坐标对。
现代实现多重纹理的方法是使用着色器(通常是OpenGL中的GLSL)。将每个纹理加载和绑定到不同的纹理单元,将你的着色器uniform设置为你正在使用的纹理单元的值(0表示纹理单元0等),采样每个纹理,并使用所需的混合函数进行混合以获得输出颜色。

我该如何判断哪些三角形块应该使用纹理A渲染,哪些应该使用纹理B渲染? - Amir
谢谢!我已经看过了它的实现方式,就像你说的一样 :) - Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接