前提:主介面必須為 16-bit 以上色深;效果作用於整個主介面(顯示卡層級)。
DDGAMMARAMPtypedef struct {
WORD red[256], green[256], blue[256];
} DDGAMMARAMP;
IDirectDrawGammaControl 介面:lpPrimary->QueryInterface(IID_IDirectDrawGammaControl, (void**)&pGamma)pGamma->GetGammaRamp(0, &oldRamp)pGamma->GetGammaRamp(0, &ramp)pGamma->SetGammaRamp(0, &oldRamp)for (int i=0; i<256; i++) {
if (ramp.red[i] > 0) { ramp.red[i]=0; pGamma->SetGammaRamp(0, &ramp); } Sleep(1);
if (ramp.green[i] > 0) { ramp.green[i]=0; pGamma->SetGammaRamp(DDSGR_CALIBRATE, &ramp); } Sleep(1);
if (ramp.blue[i] > 0) { ramp.blue[i]=0; pGamma->SetGammaRamp(DDSGR_CALIBRATE, &ramp); } Sleep(1);
}
// 完成後還原
pGamma->SetGammaRamp(0, &oldRamp);