Цитата(AHTOXA @ Sep 3 2016, 14:10)

Вы же сами в стартовом посте написали про 0.1с. Вот это и есть 100мс.
А 1000FPS вы никакими BitBlt и OpenGl-ями не получите. Урежьте осетра

Чета я не то сказал )))
Реально хотелось бы достичь макс скорость 5 сек на весь экран, это 5/1100 = 4,5 мс/столбец
ну а тут как получиться
Цитата(_pv @ Sep 3 2016, 14:17)

с glCopyPixels сдвинуть текущую картинку на один пиксель и через glDrawPixels дорисовать только один недостающий столбец.
никаких дополнительных буферов в этом случае вообще не надо.
Осталось все это нарисовать в коде )
Цитата(Onkel @ Sep 3 2016, 13:47)

я еще когда в 90е делал систему сдирания буржуйских чипов для наших конфетных харь, готовил следующий экран в памяти, vga имело буфер размером со всю экранную память, и потом просто переключал память, выводимую на экран.
Ну тут кроме это окна еще куча других работает, копировать весь экран не получиться.
Такое предлагаю,
создаем матрицу размер +1 по х,
вводим новые значения в правый столбец,
выводим в канву со сдвигом -1 (чтобы новые данные появились справа)
копируем полученную канву в матрицу с нуля,
и тд.
Типа того, работает но жрет ресурсов столько же как предыдущие варианты (
похоже это типа тоже тупое копирование массива а не сдвиг указателя памяти
TRect tRectFrom(1,0,1101,800);
TRect tRectTo (0,0,1100,800);
Image1->Canvas->CopyMode=cmSrcCopy;
Image1->Canvas->CopyRect(tRectTo,gBitmap->Canvas,tRectFrom);
TRect tRectFrom2(0,0,1100,800);
TRect tRectTo2 (0,0,1100,800);
gBitmap->Canvas->CopyRect(tRectTo2,Image1->Canvas,tRectFrom2);
for ( y = 0; y < h1; y++)
{
ptr = (Byte *)gBitmap->ScanLine[y];
ptr[3300+0] = (Byte)Col;
ptr[3300-1] = (Byte)0;
ptr[3300-2] = (Byte)0;
ptr[3300-3] = (Byte)Col;
ptr[3300-4] = (Byte)0;
ptr[3300-5] = (Byte)0;
ptr[3300-6] = (Byte)Col;
ptr[3300-7] = (Byte)0;
ptr[3300-8] = (Byte)0;
}
ps а не , был не прав, вроде меньше нагрузка ...
Сообщение отредактировал Herz - Sep 3 2016, 12:35