2 台のカメラ (各画像は 8 ビット グレースケール) から画像を取得し、それらの画像をテクスチャにアップロードします。次に、オーバーレイされたテクスチャを描画して、1 つの画像から 50%、別の画像から 50% にしたいのですが、必要な結果が得られない理由がわかりません。
以下は、アルファ ブレンディングのセットアップです。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Alpha Blending
テクスチャを更新するには:
glTexImage2D(GL_TEXTURE_2D, 0, GL_INTENSITY, g_Image[g_iCounter].GetCols(), g_Image[g_iCounter].GetRows(), 0, GL_RED, GL_UNSIGNED_BYTE, g_Image[g_iCounter].GetData());
g_Image
FlyCapture2 画像 (Point Gray SDK) でGetCols() / GetRows()
あり、画像のサイズGetData()
、生データ ポインターを返します。これは問題なく動作します。画像を並べて表示したい場合、これはまさに私が望むことです。
私の描画コード:
glBindTexture(GL_TEXTURE_2D, texture2);
glBegin(GL_QUADS);
// Front Face
glTexCoord2f(left, bottom); glVertex3f(-1.0f, -1.0f, 0.5f);
glTexCoord2f(right, bottom); glVertex3f( 0.0f, -1.0f, 0.5f);
glTexCoord2f(right, top); glVertex3f( 0.0f, 1.0f, 0.5f);
glTexCoord2f(left, top); glVertex3f(-1.0f, 1.0f, 0.5f);
glEnd();
if(interleaved)
{
top = 0.0f;
bottom = 1.0f;
left = 0.0f;
right = 1.0f;
glColor4f(1.0, 1.0, 1.0, 0.5);
switch(flags1)
{
case 0: break;
case 1: left = 1.0f; right = 0.0f; break;
case 2: top = 1.0f; bottom = 0.0f; break;
case 3: top = 1.0f; bottom = 0.0f; left = 1.0f; right = 0.0f; break;
default: break;
}
glEnable(GL_BLEND);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
// Front Face
glTexCoord2f(left, bottom); glVertex3f(-1.0f, -1.0f, 0.5f);
glTexCoord2f(right, bottom); glVertex3f( 0.0f, -1.0f, 0.5f);
glTexCoord2f(right, top); glVertex3f( 0.0f, 1.0f, 0.5f);
glTexCoord2f(left, top); glVertex3f(-1.0f, 1.0f, 0.5f);
glEnd();
glDisable(GL_BLEND);
}
}
ただし、これにより常に両方の画像が表示されますが、最初に描画された画像が常によりよく見える画像になり、50/50 ブレンドではありません。50/50 にするために何を変更する必要がありますか?