在我的 .cpp 代码中,我创建了一个四边形列表,其中一些有一个标志,在像素着色器中,我检查是否设置了该标志,如果未设置标志,则四边形将变为红色,例如,如果设置了标志,我想决定每个像素的颜色,所以如果我需要将标记的四边形的一半着色为红色,另一半着色为蓝色,我可以简单地执行以下操作:
if coordinate in quad < something color = red
else colour = blue;
通过这种方式,我可以将四边形的一半涂成蓝色,另一半涂成红色,或者我可以决定在哪里放置红色或在哪里放置蓝色。
想象一下我有一个 50x50 像素的四边形
[frag]
if(quad.flag == 1)
{
if(Pixel_coordinate.x<25 ) gl_fragColor = vec4(1.0, 0.0, 0.0, 1.0);
else gl_fragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
else
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
在这种情况下,我希望设置了标志的四边形每个面将获得两种颜色。
我希望我现在说得更具体了。
thanks.
只是为了添加一些我不能使用任何纹理的东西。
好的,我现在这样做:
每个四边形有 4 个纹理,坐标为 (0,0)、(0,1)、(1,1)、(1,0);
我使用以下命令启用纹理坐标:
glTexCoordPointer(2, GL_SHORT, sizeof(Vertex), BUFFER_OFFSET(sizeof(float) * 7));
[vert]
varying vec2 texCoord;
main()
{
texCoord = gl_MultiTexCoord0.xy;
}
[frag]
varying vec2 texCoord;
main()
{
float x1 = texCoord.s;
float x2 = texCoord.t;
gl_FragColor = vec4(x1, x2, 0.0, 1.0);
}
我总是得到黄色,所以 x1 = 1 和 x2 = 1 几乎总是和一些四边形是黄色/绿色。
我希望片段着色器中的纹理坐标会发生变化,所以我应该得到一个渐变,我错了吗?