如何在每个角上绘制一个带有自己纹理的三角形?

时间:2011-08-08 17:27:34

标签: c++ opengl multitexturing

基本上,我想为三角形的每个角提供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来实现它,但这是最好的方法吗?我想听到更多关于此的想法。

1 个答案:

答案 0 :(得分:1)

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

然而,通过在第二个纹理上使用alpha混合(从顶点颜色中拾取alpha值),可能可以使用两个纹理。但我不确定。