我从两个相机(每个图像 8 位灰度)抓取图像,并将这些图像上传到纹理。然后我想绘制叠加的这些纹理,从一个图像中产生 50%,从另一张图像中产生 50%,但我不知道为什么它不会产生我需要的结果。
下面是我的 alpha 混合设置:
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 Image(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?