OpenGL ES 2.0 で OpenGL ES 1.1 と同様の結果を得る方法がわかりません。実際に Sampler2D を使用して (テクスチャとアルファ チャネルをフレーム バッファにブレンドするため)、色も設定したいと考えています。テクスチャは色でペイントする必要があります-OpenGL ES 1.1のように、私のFragmentShaderは次のようになります:
varying lowp vec4 colorVarying;
varying mediump vec2 texcoordVarying;
uniform sampler2D texture;
void main(){
gl_FragColor = texture2D(texture, texcoordVarying) + colorVarying;
}
しかし、「+ colorVarying」の部分は私のアルファチャンネルを黒で破壊し (AlphaValue が 0 の場合、colorVarying も追加するため)、奇妙なグラデーション効果を生み出します...固定関数パイプラインでテクスチャとカラーチャンネルをどのように組み合わせますか? glColor4f の私の代替品は次のとおりです。
void gl2Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a){
const GLfloat pointer[] = {r, g, b, a};
glVertexAttribPointer(ATTRIB_COLOR, 2, GL_FLOAT, 0, 0, pointer);
glEnableVertexAttribArray(ATTRIB_COLOR);
}
そして、私は glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); を使用しています。これが何らかの形で関連している場合...
色 1.0、0.0、1.0、1.0 については、次のようになります。
そして、私は取得したい:
これを達成するためのアイデアはありますか?どんな助けでも大歓迎です。