1
我給了一個不斷變化的/更新的緩衝區,我需要將此緩衝區的像素閃爍到屏幕上。 對於我的測試代碼,我讀取一個位圖並將其存儲到緩衝區中。 問題是,我想在使用OpenGL將其移動到屏幕時忽略特定的顏色。更好的方式來忽略特定的顏色 - Blit
目前我使用:
glPushMatrix();
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(1.0f, 1.0f, 1.0f, 0.0f);
unsigned char* Data = (unsigned char*)Buffer;
for (int I = Bmp.Height(); I > 0; --I)
{
for (int J = 0; J < Bmp.Width(); ++J)
{
if (Data[0] != 0 && Data[1] != 0 && Data[2] != 0) //If the colour is black, we don't draw it..
{
glRasterPos2i(J, I);
glDrawPixels(1, 1, GL_BGR, GL_UNSIGNED_BYTE, Data);
}
Data += Bmp.Bits() == 32 ? 4 : 3;
if(Bmp.Bits() == 24)
Data += (-Bmp.Width() * 3) & 3;
}
}
glPopMatrix();
SwapBuffers(DC);
Sleep(1);
所以在上面的,我有什麼是所謂的一些數據緩衝區指針。然後給我一個高度和寬度循環。如果顏色是黑色的,我不畫它。否則,我使用glDrawPixels
結合glRasterPos2i
一次將它繪製到屏幕上一個像素。有沒有更有效的方法可以使其繪製除特定顏色以外的所有像素?它是一個緩衝區而不是紋理。我以Bmp爲例。