Сделать синхронизацию графики в текстовом режиме до 60 кадров в секунду - PullRequest
0 голосов
/ 22 декабря 2019

Я пытаюсь заставить работать 80 столбцов, 25 строк, 256 глифов, 16 цветов переднего плана, 16 цветов фона, 60 кадров в секунду. Это проблемный код:

#include <windows.h>
#include <stdint.h>

int main() {
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD start = {0, 0};
    DWORD b = 0;
    char shades[2000];
    for (int i=0; i<2000; i+=80){
        for (int k=0; k<16; k++){
            shades[i+k]=32;
        }
        for (int k=16; k<32; k++){
            shades[i+k]=176;
        }
        for (int k=32; k<48; k++){
            shades[i+k]=177;
        }
        for (int k=48; k<64; k++){
            shades[i+k]=178;
        }
        for (int k=64; k<80; k++){
            shades[i+k]=219;
        }
    }
    uint16_t colors[2000];
    for (int i=0; i<2000; i++){
        colors[i] = (uint8_t)((i%16)+((i/80)*16));
    }
    CHAR_INFO screen[2000];
    for (int i=0; i<2000; i++){
        screen[i].Char.AsciiChar = shades[i];
        screen[i].Attributes = colors[i];
    }
    SMALL_RECT screenrect;
    screenrect.Left = 0;
    screenrect.Top = 0;
    screenrect.Right = 79;
    screenrect.Bottom = 24;
    COORD screensize = {80, 25};
    uint8_t flag = 0;
    int o = 600;
    SMALL_RECT testscreenrect;
    testscreenrect.Left = 0;
    testscreenrect.Top = 0;
    testscreenrect.Right = 79;
    testscreenrect.Bottom = 15;
    COORD testscreensize = {80, 16};
    while (o){
        WriteConsoleOutput(hConsole, screen, testscreensize, start, &testscreenrect);
        o--;
    }
    return 0;
}

Ожидается, что этот код будет выполняться за 600 кадров или 10 секунд. Также предполагается рисовать каждый кадр в кадре. Но этот код не работает. Как исправить эту проблему со временем?

...