申し訳ありませんが、明確にするために質問を書き直します。
私の .cpp コードでは、クワッドのリストを作成します。そのうちのいくつかにはフラグがあり、ピクセル シェーダーでは、このフラグが設定されているかどうかを確認します。フラグが設定されていない場合、クワッドは赤で色付けされます。たとえば、フラグが設定されている場合、すべてのピクセルの色を決定したいので、フラグが設定されたクワッドの半分を赤で、残りの半分を青で色付けする必要がある場合は、次のように簡単に実行できます。
if coordinate in quad < something color = red
else colour = blue;
このようにして、四角形の半分を青、残りの半分を赤にするか、どこに赤を配置するか、どこに青を配置するかを決めることができます。
50x50 ピクセルのクワッドがあるとします。
[フラグ]
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);
この場合、フラグが設定されたクワッドは、面ごとに 2 つの色を取得すると予想されます。より具体的になったことを願っています。
ありがとう。
何かを追加するだけで、テクスチャを使用できません。
わかりました私は今これを行います:
すべてのクワッドには、(0,0)、(0,1)、(1,1)、(1,0) に調整された 4 つのテクスチャがあります。
次を使用してテクスチャ座標を有効にします。
glTexCoordPointer(2, GL_SHORT, sizeof(Vertex), BUFFER_OFFSET(sizeof(float) * 7));
[垂直]
varying vec2 texCoord;
main()
{
texCoord = gl_MultiTexCoord0.xy;
}
[フラグ]
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 で、一部のクワッドは黄色/緑色です。
テクスチャ座標がフラグメント シェーダーで変更されると予想されるので、グラデーションを取得する必要がありますが、間違っていますか?