0

私は iOS と OpenGL のプログラミングは初めてで、現在、練習用に OpenGL ES 2.0 と GLKit を使用して簡単なプログラムを書いています。現在、PNG ファイルを正常に読み込んで画面に表示できます。

プログラムで GLKViewController を使用し、 で初期化を行いましたviewDidLoad。私のglkView:drawInRectメソッドのコードは次のとおりです。

glClearColor(115.0/255.0, 171.0/255.0, 245.0/255.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

self.effect.texture2d0.name = self.textureInfo.name;
self.effect.texture2d0.enabled = YES;

[self.effect prepareToDraw];

glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);

long offset = (long)&_quad;
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, geometryVertex)));
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, textureVertex)));

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

上記のコードはかなりうまく機能します。次に、PNG 画像の不透明度を設定します。これは簡単に聞こえるかもしれませんが、不透明度を変更する方法がわかりません...

4

1 に答える 1

0

フラグメント シェーダーがアルファ チャネルの定数 1.0 値を gl_FragColor に与えていると思われます。ブレンドを生成するには、その値を変更する必要があります。この質問への回答を参照してください。

OpenGL ES 2.0 でアルファ ブレンディング透明度を機能させるにはどうすればよいですか?

于 2013-06-13T22:16:56.797 に答える