Gibt es eine bessere Möglichkeit, mit C ++ eine 24 -Bit -Farbe im Terminal zu verwenden?C++

Programme in C++. Entwicklerforum
Anonymous
 Gibt es eine bessere Möglichkeit, mit C ++ eine 24 -Bit -Farbe im Terminal zu verwenden?

Post by Anonymous »

Ich habe mit C ++ farbige Animationen im Terminal erstellt, aber mit der Leistungsabnahme, die ANSI mit sich bringt, angefangen. Ich möchte eine volle Farbe im Terminal haben und gleichzeitig eine anständige Menge an Geschwindigkeit beibehalten. Ich verwende derzeit _write , um an das Terminal zu schreiben. Ich vermute, dass ANSI die Wartezeiten erhöht, weil es die Raumnutzung erhöht hat: \ x1b [48; 2; 000; 000; 000m für einen Buchstaben mit vollständig unabhängigem RGB. Dies ist 20-mal teurer als einfach einen einzelnen Buchstaben an das Terminal zu schreiben.

Code: Select all

#include 
#include 
#include 
#include 

int main()
{
HANDLE consoleIn = GetStdHandle(STD_INPUT_HANDLE);
DWORD dwMode;
GetConsoleMode(consoleIn, &dwMode);
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
SetConsoleMode(consoleIn, dwMode);
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen;
GetConsoleScreenBufferInfo(console, &screen);
short columns = screen.srWindow.Right - screen.srWindow.Left + 1;
short rows = screen.srWindow.Bottom - screen.srWindow.Top + 1;
int newfd = dup(STDOUT_FILENO);
char buffer[columns * rows];
int i;
for (i = 0; i < columns * rows; i++)
{
buffer[i] = ' ';
}
int fileHandle = 0;
auto start = std::chrono::high_resolution_clock::now();
for (i = 0; i < 500; i++)
{
_write(newfd, buffer, sizeof(buffer));
}
auto finish = std::chrono::high_resolution_clock::now();
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post