Рисование на Hаndle происходит в 10 раз быстрее!(точнее в 100 раз) Чем на Bitмap в PaintBox. Это то, что мне нужно!!
Подскажите, пожалуйста, как можно очищать поверхность?
code_26726.txt
Этот топик читают: Гость
|
Ответов: 1429
Рейтинг: 50
|
|||
| карма: 0 |
| ||
| файлы: 1 | code_26726.txt [2.3KB] [136] |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
|
Редактировалось 1 раз(а), последний 2025-01-12 10:57:57 |
|||
| карма: 0 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
г. ость, спасибо!
|
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login писал(а): в 10 раз быстрее!(точнее в 100 раз)Это Вы ещё через OpenGL и DirectDraw не пробовали login писал(а): Это то, что мне нужно!!Вот только без синхронизации с частотой кадров монитора будут встречаться эффекты "рваного кадра" и пропадание объектов при анимации, но ради скорости можно и потерпеть. Если отбрасывать не попадающее в обзор, вообще космических скоростей достигните. |
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0, OpenGL пробовал, но с ним мне сложнее работать. Много нюансов.
А что такое DirectDraw, можно пример на HiAsm глянуть? |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, а нет на HiAsm DirectDrawDirect2d, AFAIK. Максимум, я в штатной поставке отрыл библиотеку GDI+ и немного с ней поигрался, работает, но требует много кода на паскале.
|
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0, я вспомнил, я пробовал когда-то с точками на Handle рисовать и у меня всё мерцало. Квадратики щас не мерцают, я тогда толком не разобрался, что с этим делать. Анимировать буду дискретно.
C OpenGL сложнее в том, что мне нужно 3 поля одновременно рисовать на одной форме. А там сильно хитрая схема для такого. 3 проблемы сразу решилось! (оптимизация, выделение рамкой - формула Леонида, и Handle - скорость) Хороший сегодня день |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login писал(а): 3 проблемы сразу решилось! (оптимизация, выделение рамкой - формула Леонида, и Handle - скорость)Вы сделали таки отброс ненужного при отрисовке? Формула у Леонида - простое бинарное представление того, что он и я писали Вам в соседней теме - просто много, очень много сравнений, но от перебора это не избавляет, естественно. При отрисовке на Handle (в реальности вы рисуете на контексте, который получается элементом из Handle, а можете взять контекст с точки onRedraw и рисовать прямо на нём, хотя ускорение будет заметно только на очень слабых машинах, если вообще будет). |
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0 писал(а): Вы сделали таки отброс ненужного при отрисовке?onRedraw - про это я не понял. Можно пример подключения? |
|||
| карма: 0 |
|
|
Ответов: 8976
Рейтинг: 825
|
|||
|
1nd1g0 писал(а): Это Вы ещё через OpenGL и DirectDraw не пробовалиlogin писал(а): А что такое DirectDraw, можно пример на HiAsm глянуть?1nd1g0 писал(а): а нет на HiAsm DirectDrawDirect2d |
|||
| карма: 19 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
Есть идея, чтобы избежать мерцаний экрана, смикшировать слои изображения во внутреннем буфере PaintBox-а, а затем вывести на Handle готовый кадр. По скорости получается быстро. Но возникла проблема, чем вывести внутренний буфер?
У Img_bmp не реализована отрисовка на handle?? code_26734.txt |
|||
| карма: 0 |
| ||
| файлы: 1 | code_26734.txt [2.7KB] [129] |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
login, на редкость извращённый метод, ума не приложу, как это может быть "быстро"
|
|||
| карма: 1 |
|
|
Ответов: 1429
Рейтинг: 50
|
|||
|
1nd1g0,
Моя логика: 1. мерцание происходит от того, что сначала рисуется кадр с сеткой, затем рисуются квадратики. Глаз успевает это увидеть.. 2. Если в буфере складывать квадратики и сетку перед выводом на экран, то получается лучше. 3. Попробовал скорость, скорость хорошая, только выводится не в то окно. ------------ Дoбавленo в 12.43: Не правильно была составлена схема, теперь работает быстро и не глючит А вот для сравнения скорости, если выводить прямно на PainBox: |
|||
| карма: 0 |
|
13




Поиск
Друзья
Администрация