1

アルファチャンネルが割り当てられた2つのtga画像をブレンドしたいと思います。ベース画像とフォアグラウンド画像、およびフォアグラウンド画像にはアルファが255に設定された数文字しかなく、フォアグラウンド画像の残りのアルファ値は0に設定されています。このフォアグラウンド画像を使用して、ベースにいくつかの文字を追加できます。画像(ベース画像は文字のみで覆われ、前景画像の残りは透明です)。私は次のようなOpenGLコードを使用します:

glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(0, 0, m_width, m_height);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glWindowPos3i(0, 0, 0);
// draw the base image to the FBO
glDrawPixels(m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, m_base.imageData);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glWindowPos3i(0, 0, 0);
// draw the foreground image to blend with the base image
glDrawPixels(m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, m_foreground.imageData);
GL_ERROR;
glDisable(GL_BLEND);

問題はそれが機能しないことです。プログラムはベース画像をレンダリングするだけで、(前景画像に)文字はありませんか?私はそれがうまくいくはずだと思います、そして私はそれがうまくいかなかった理由がわかりません。私はそれをテストしましたが、何もgl_error起こりません。どんな体も助けることができますか?ブレンド機能は、glColor設定した背景色と最初の色の間で問題なく機能しglDrawPixelsます。しかし、それは最初と2番目の間では機能しませんglDrawPixels、なぜですか?

4

0 に答える 0