Я видел несколько консольных игр, где экран обновляется/очищается без раздражающего мигания. Я пробовал множество решений, вот что я как сейчас:Экран очистки консоли Win32 C++ без мигания
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);
}
Тем не менее, я получаю некоторое минимальное мерцание. У кого-нибудь есть идеи?
It возможно, что эти игры не написаны как консольные приложения Windows, а как приложение DOS, которые используют различные графические режимы и пишут пиксели непосредственно в графическую память. –
@Captain Перечитайте первое предложение. Исходный код не для «консольных игр», которые он видел, исходный код - это то, что он пытался. –
@CodyGray Oops;) –