RGB und BGR
-
Hallo!
Ich habe folgenden Code, mit dem ich den BackBuffer mit einer bestimmten Farbe löschen will:
DDBLTFX bltfx;
ZeroMemory(&bltfx, sizeof(bltfx));
bltfx.dwSize = sizeof(bltfx);
bltfx.dwFillColor = 0xFF0000;
backBuffer->Blt(NULL, NULL, NULL, DDBLT_COLORFILL|DDBLT_WAIT, &bltfx);Außerdem verwende ich folgenden Code, um festzustellen ob die aktuelle Grafikkarte die Farben als RGB oder BGR speichert:
DDSURFACEDESC2 tmpSurfaceDesc;
primarySurface->GetSurfaceDesc(&tmpSurfaceDesc);if(tmpSurfaceDesc.ddpfPixelFormat.dwRBitMask > tmpSurfaceDesc.ddpfPixelFormat.dwBBitMask)
rgbOrder = orderRGB;
else
rgbOrder = orderBGR;Bei mir ist die rote Maske kleiner als die blaue, daher speichert meine Grafikkarte die Farben als BGR.
Ich verwende beim Löschen des BackBuffers die Farbe 0xFF0000, was ja bei meiner Grafikkarte eigentlich Blau sein sollte - es ist aber Rot!
Wieso?
Danke!
mfg
-
Denkst du auch an big und little endian? Am besten du löschst direkt mit der Rot Maske, wenn du Rot haben möchtest.
HTH
Bye, TGGC (Der Held ist zurück)