Widziałem kilka gier konsolowych, w których ekran odświeża się/czyści bez denerwującego mrugania. Próbowałem wielu rozwiązań, oto, co mam teraz:Ekran czyszczenia konsoli Win32 C++ bez migania
while(true)
{
if(screenChanged) //if something needs to be drawn on new position
{
COORD coordScreen = { 0, 0 };
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
}
///printf all the time graphics on their right position with SetConsoleCursorPosition
Sleep(33.3f);
}
Nadal dostaję minimalne mruganie. Ktoś ma jakieś pomysły?
It jest możliwe, że te gry nie są napisane jako aplikacje konsoli systemu Windows, ale jako aplikacja DOS, które używają różnych trybów graficznych i zapisują piksele bezpośrednio w pamięci graficznej. –
@Captain Przeczytaj ponownie pierwsze zdanie. Kod źródłowy nie jest przeznaczony dla "gier konsolowych", które widział, kod źródłowy jest tym, czego próbował. –
@CodyGray Ups;) –