我从两个摄像头(每个图像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图像(Point Grey 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?
答案 0 :(得分:0)
不要将它们叠在一起。将第二个稍微移近相机,只需靠一个胡须。大约0.000001
的差异应该是这样做的。