|
Програмирование графики, вопрос |
|
|
|
 |
Ответов
|
Sep 3 2016, 09:38
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Я правильно понял, что если создать две одинаковые матрицы, и потом по очереди копировать одну в другую со сдвигом , прибавляя новые данные ? Так можно скопировать ? Можно примерчик плиз ? Я так понимаю это glCopyPixels ? Цитата(AHTOXA @ Sep 3 2016, 10:09)  Так у вас таймер молотит раз в миллисекунду! Это 1000FPS, конечно жрёт. Сделайте, 100ms, и будет всё нормально. Эта штука вообще должна летать со скоростью пули по хорошему, как на локаторе С-400 ) со 100 мс пока зкран весь сдвинется родить можно будет )
Сообщение отредактировал whale_nik - Sep 3 2016, 09:42
|
|
|
|
|
Sep 3 2016, 11:51
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Цитата(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
|
|
|
|
|
Sep 3 2016, 13:16
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(whale_nik @ Sep 3 2016, 16:51)  Чета я не то сказал ))) Реально хотелось бы достичь макс скорость 5 сек на весь экран, это 5/1100 = 4,5 мс/столбец ну а тут как получиться 4,5 мс - это 222 герца. Тоже многовато. Вы примите во внимание, что для человеческого глаза не нужна такая частота. Достаточно, скажем, 60 Гц (вернее, достаточно 25, а 60 - это будет ультра-гладкая картинка). Вот и перерисовывайте соответственно 60 раз в секунду. Пусть за одну перерисовку у вас добавляется не один, а несколько столбцов.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 3 2016, 17:58
|
Местный
  
Группа: Участник
Сообщений: 364
Регистрация: 25-09-08
Пользователь №: 40 483

|
Цитата(AHTOXA @ Sep 3 2016, 17:16)  Вот 5 сек на весь экран примерно 5мс/столбец, не вижу тут мега быстрого чего то .
|
|
|
|
Сообщений в этой теме
whale_nik Програмирование графики Sep 1 2016, 14:49 _pv быстрые методы это аппаратно через opengl.
хотя да... Sep 1 2016, 16:02 whale_nik Не совсем понял а как это все вывести на форму ?
Я... Sep 1 2016, 16:13 whale_nik Типа такого надо )
Вся картинка должна ехать влево... Sep 1 2016, 18:00  jcxz Цитата(whale_nik @ Sep 2 2016, 00:00) Тип... Sep 2 2016, 04:35 AHTOXA Цитата(whale_nik @ Sep 1 2016, 19:49) Есл... Sep 2 2016, 06:38 whale_nik Сделал как советуете, все равно жесть как медленно... Sep 2 2016, 21:26  AHTOXA Цитата(whale_nik @ Sep 3 2016, 02:26) Сде... Sep 3 2016, 06:09 sigmaN ЦитатаОткрываете MSDN на разделе Windows GDI... Sep 2 2016, 22:16 _pv у openGL есть glDrawPixels.
инициализация через GL... Sep 2 2016, 23:34 jcxz Цитата(_pv @ Sep 3 2016, 05:34) у openGL ... Sep 3 2016, 03:01  _pv Цитата(jcxz @ Sep 3 2016, 09:01) И Ваш ко... Sep 3 2016, 08:48   Onkel Цитата(_pv @ Sep 3 2016, 11:48) а совсем ... Sep 3 2016, 09:47 whale_nik Мне кажется основные тормоза и загрузка это инициа... Sep 3 2016, 00:36 k155la3 Курить в сторону направления, заданного jcxz
Пер... Sep 3 2016, 08:42   k155la3 Цитата(whale_nik @ Sep 3 2016, 14:51) . .... Sep 3 2016, 12:35    whale_nik Без окон никак, увы.
Вот вроде бы нагрузка неболь... Sep 3 2016, 12:38    whale_nik Цитата(AHTOXA @ Sep 3 2016, 17:16) 4,5 мс... Sep 3 2016, 17:42 _pv Цитата(whale_nik @ Sep 3 2016, 16:38) Я п... Sep 3 2016, 10:17 DASM а почему побайтно работаете и не пословно? Sep 3 2016, 12:43 whale_nik Цитата(DASM @ Sep 3 2016, 16:43) а почему... Sep 3 2016, 12:44 amaora В лоб будет больше 60 к/с, если оптимизировать как... Sep 3 2016, 13:26 sigmaN Ребят, я не понимаю зачем нам тут gl и уж тем боле... Sep 3 2016, 17:46 sigmaN Логичнее было бы в архив прилепить исходник, вмест... Sep 3 2016, 18:31 whale_nik Цитата(sigmaN @ Sep 3 2016, 22:31) Логичн... Sep 3 2016, 19:09 sigmaN Проц не грузит(не более 1 - 2% показывает диспетче... Sep 3 2016, 19:23 whale_nik Да, наверняка дергается из за того что таймер нест... Sep 3 2016, 20:29 sigmaN а, ну если чисто для пробы то
в цикле while(!A... Sep 3 2016, 21:59 whale_nik Цитата(sigmaN @ Sep 4 2016, 01:59) а, ну ... Sep 4 2016, 19:12 DASM Таймер тут не причем, просто поток, ушедший в Slee... Sep 3 2016, 22:42 sigmaN Ну Sleep() это я предложил просто. Хотя вы правы, ... Sep 3 2016, 23:24 DASM Таймера в винде для такого иные, см. BOOL QueryPer... Sep 3 2016, 23:43 jcxz Цитата(DASM @ Sep 4 2016, 05:43) Таймера ... Sep 4 2016, 04:08 alexunder Автор, а чего в сторону Direct2D не посмотрите? Дв... Sep 4 2016, 09:43 jcxz Цитата(alexunder @ Sep 4 2016, 15:43) Авт... Sep 4 2016, 13:51 sigmaN Провел тут пару экспериментов со слипом...
за осно... Sep 4 2016, 10:23 sigmaN Ну а мне было больше даже интересно Sleep() по тес... Sep 4 2016, 18:14 jcxz Цитата(sigmaN @ Sep 5 2016, 00:14) Кто зн... Sep 5 2016, 03:04 sigmaN Странно.. при условии, что в цикле есть вызов Appl... Sep 4 2016, 19:15 whale_nik Удалил файл проекта так как вы уже свой написали... Sep 4 2016, 19:32 sigmaN Ну проц и должен грузиться сильно. В цикле же нет ... Sep 4 2016, 20:42 whale_nik Никаких изменений, просто таймер отключил и все в ... Sep 4 2016, 21:37 sigmaN Что-то мне подсказывает, что кадровая развертка ту... Sep 5 2016, 08:14 whale_nik Похоже если надо плавнее и быстрее уже придется в ... Sep 5 2016, 10:14 sigmaN Глянул пару исходничков тут.. В том числе Quake 3 ... Sep 5 2016, 10:46 DASM А чем вас DirectX кстати не устраивает? Ничего пла... Sep 5 2016, 10:49 sigmaN Ну не знаю, тут вопрос как-бы про принципиальную в... Sep 5 2016, 10:56 whale_nik Жалко что вы не в билдере пишете )
В принципе мне... Sep 5 2016, 13:24 sigmaN Адаптировать всё это для билдера пара пустяков.
К... Sep 5 2016, 17:42 jcxz Цитата(sigmaN @ Sep 5 2016, 23:42) Главны... Sep 6 2016, 05:18 sigmaN Ну или ладно, можно не изменяющуюся не копировать(... Sep 6 2016, 08:40 jcxz Цитата(sigmaN @ Sep 6 2016, 14:40) но выв... Sep 6 2016, 08:54 sigmaN ЦитатаЗачем?
Уж не знаю, эксперимент показал, что ... Sep 6 2016, 09:12 whale_nik Подскажите еще допустим есть переменная 0-256, как... Sep 8 2016, 22:39 alexr22b Цитата(whale_nik @ Sep 9 2016, 02:39) Под... Sep 9 2016, 03:17  whale_nik Цитата(alexr22b @ Sep 9 2016, 07:17)
Сп... Sep 9 2016, 09:06 whale_nik Работает, красота ))) Sep 14 2016, 22:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|