0

我从两个相机(每个图像 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?

4

1 回答 1

0

不要将它们画在彼此之上。将第二个稍微靠近相机,仅靠胡须。0.000001应该有大约的差异。

于 2013-01-22T10:06:24.700 回答