как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 02.06.02 17:48
Оценка:
void example(HWND hWnd){
        LPDIRECTDRAWCOLORCONTROL lpColor;
    DDCOLORCONTROL ddcol;
    PrimSurf->QueryInterface(IID_IDirectDrawColorControl,(void**)&lpColor);
    ddcol.dwFlags=DDCOLOR_BRIGHTNESS;
    ddcol.lBrightness=0;
    lpColor->SetColorControls(&ddcol);
}



— что тут не правильно? А ошибка именно в PrimSurf->QueryInterface(IID_IDirectDrawColorControl,(void**)&lpColor);
— если этого делать не надо, то чтоже вообще надо? Как мне понизить яркость?
Re: как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 03.06.02 07:52
Оценка:
Ну можите, хотябы, просто написать пример использования LPDIRECTDRAWCOLOR ?
Re[2]: как используется LPDIRECTDRAWCOLORCONTROL
От: visitant Украина  
Дата: 03.06.02 14:58
Оценка:
Что за ошибка?
Re[3]: как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 03.06.02 15:16
Оценка:
Здравствуйте visitant, Вы писали:

V>Что за ошибка?


E_NOINTERFACE — но интерфейс есть!!!
Re[4]: как используется LPDIRECTDRAWCOLORCONTROL
От: visitant Украина  
Дата: 04.06.02 05:53
Оценка:
Requirements
Windows NT/2000: Requires Windows 2000.
Re[5]: как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 04.06.02 07:22
Оценка:
Здравствуйте visitant, Вы писали:

V>Requirements

V> Windows NT/2000: Requires Windows 2000.

Во-первых у меня XP так что все должно раьотать (а это не так).
Во-вторых, что под Win98/95/ME нет способа затемнения экрана (ведь именно этого я добиваюсь!)
Re[6]: как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 06.06.02 05:46
Оценка:
Мне никто не хочет помочь?
Или просто, хотябы расскажите, как мне любым другим способом плавно затемнить экран???
Re: как используется LPDIRECTDRAWCOLORCONTROL
От: Snax Россия  
Дата: 06.06.02 08:28
Оценка:
Здравствуйте Unknown007, Вы писали:

U>- что тут не правильно? А ошибка именно в PrimSurf->QueryInterface(IID_IDirectDrawColorControl,(void**)&lpColor);


Хм... А железяка-то у тебя умеет делать ColorControl для PrimarySurface?
Запусти DXCapsViewer.exe (%PlatformSDK%\Bin\DXUtils) и посмотри в

DirectDraw Devices->Caps->General напротив DDCAPS2_COLORCONTROLPRIMARY

должно быть написано что-то вроде "yes". Если нету такого,
значит твоя видеокарточка не умеет этого делать.

U> Как мне понизить яркость?


Не выпендриваться, а использовать IDirectDrawGammaControl, он есть практически на
всех карточках.

Успехов,
Павел.
Re[2]: как используется LPDIRECTDRAWCOLORCONTROL
От: Unknown007  
Дата: 06.06.02 17:08
Оценка:
Здравствуйте Snax, Вы писали:

S>Не выпендриваться, а использовать IDirectDrawGammaControl, он есть практически на

S>всех карточках.

Хорошо, не будем выпендриваться... Можешь дать РАБОТАЮЩИЙ пример?

Мой ЖЖЖЖЖУТКО тормозззит....:

    for(int t=0; t<65535; t++){
        lpGammaControl->GetGammaRamp(0,&DDGammaRamp);
    for(int i=0;i<256;i++){
        if(DDGammaRamp.red[i]>0)DDGammaRamp.red[i]-=1;
        if(DDGammaRamp.green[i]>0)DDGammaRamp.green[i]-=1;
        if(DDGammaRamp.blue[i]>0)DDGammaRamp.blue[i]-=1;
        
        lpDDGammaControl->SetGammaRamp(NULL, &DDGammaRamp);
    }
    
    }
Re[3]: как используется LPDIRECTDRAWCOLORCONTROL
От: Snax Россия  
Дата: 07.06.02 00:00
Оценка: 12 (1)
Здравствуйте Unknown007, Вы писали:

U>Мой ЖЖЖЖЖУТКО тормозззит....:


U>
U>    for(int t=0; t<65535; t++){
U>        lpGammaControl->GetGammaRamp(0,&DDGammaRamp);
U>    for(int i=0;i<256;i++){
U>        if(DDGammaRamp.red[i]>0)DDGammaRamp.red[i]-=1;
U>        if(DDGammaRamp.green[i]>0)DDGammaRamp.green[i]-=1;
U>        if(DDGammaRamp.blue[i]>0)DDGammaRamp.blue[i]-=1;
U>        
U>        lpDDGammaControl->SetGammaRamp(NULL, &DDGammaRamp);
U>    }
U>    
U>    }
U>


Еще бы не тормозил.

1. Иди спать.
2. С утра хорошо позавтракай.
3. Выпей кофе
4. Внимательно почитай, что пишут про Get/SetGammaRamp.

Если не поможет, то вот такой код тормозить не должен:

    DDGAMMARAMP DDGammaRamp = {0};
    lpGammaControl->GetGammaRamp(0, &DDGammaRamp);
    for(int i=0;i<256;i++)
    {
        if(DDGammaRamp.red[i]>0) DDGammaRamp.red[i]-=1;
        if(DDGammaRamp.green[i]>0) DDGammaRamp.green[i]-=1;
        if(DDGammaRamp.blue[i]>0) DDGammaRamp.blue[i]-=1;
    }
    lpDDGammaControl->SetGammaRamp(0, &DDGammaRamp);


:-Павел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.