0

OpenGL ES 2.0 でクワッドに円を描きました。フラグメント シェーダーのコードは、設定された中心と半径を取得し、クワッド内に円を作成します。クワッドがまだ空白で表示され、背景の色/テクスチャで塗りつぶされないため、背景の色を変更しようとするまで、これはうまくいきました。四角形を背景と同じ色/テクスチャで塗りつぶし、円を表示したままにする簡単な方法はありますか?

フラグメント シェーダーのコードは次のとおりです。

"varying highp vec2 textureCoordinate;\n"

"const highp vec2 center = vec2(0.5, 0.5);\n"
"const highp float radius = 0.5;\n"

"void main()\n"
"{\n"
"highp float distanceFromCenter = distance(center, textureCoordinate);\n"
"lowp float checkForPresenceWithinCircle = step(distanceFromCenter, radius);\n"

"gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0) * checkForPresenceWithinCircle;\n"
"}\n"
4

2 に答える 2

0

gl_FragColor のアルファ部分は通常、次のようにテクスチャから読み取られます。

vec4 vTexture = texture2D(gsuTexture0, gsvTexCoord);
gl_FragColor = vTexture;

また、次のように、カラー バッファ クリアのアルファが 0.0 に設定されていることを確認してください。

glClearColor(fRed, fGreen, fBlue, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

また、ここで説明するように、Android Bitmap クラスでアルファ テクスチャを使用できないという問題もあります。

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1/

于 2013-07-23T15:22:15.397 に答える