3

基本上,我想为三角形的每个角提供 3 个纹理,并从一个纹理插值到另一个纹理,就像在角上用 glColor() 插值颜色一样。

编辑:由于这似乎无法通过纹理组合器实现,因此我愿意使用着色器来实现。

这是我现在拥有的片段着色器代码:

vec4 c = gl_Color;
gl_FragColor = texture2D(Texture0, TexCoord0)*c.r+texture2D(Texture1, TexCoord1)*c.g+texture2D(Texture2, TexCoord2)*c.b;

我使用 glColor(); 将颜色 (1,0,0), (0,1,0), (0,0,1) 推到每个三角形的角落,然后我读取颜色以查看我需要相应混合多少纹理.

现在的问题是我不能再在我的顶点上使用颜色了,所以我问,告诉我的片段着色器如何混合纹理的最佳方法是什么+能够在三角形的每个角上使用 glColor() 来应用一些染色?

Edit2:我设法通过发送一个告诉混合比率的 3d texcoord 来让它工作,但这是最好的方法吗?我想听听更多关于这方面的想法。

4

1 回答 1

1

如果不使用着色器,我认为这是不可能的。在您的 OpenGL 代码中,无论如何我都看不到 OpenGL 可以知道要影响每个角落的纹理。这将需要一个顶点属性(除了颜色或纹理坐标),如果没有着色器,这是不可能的。

但是,也许可以通过在第二个纹理上使用 alpha 混合(从顶点颜色中选取 alpha 值)来使用两个纹理。但我不确定。

于 2011-08-08T17:39:22.333 回答