Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прорисовка массива пикселей на граф. компонент 
:(
    Опции темы
AntonN
Дата 10.12.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



Цитата

А смысл? Запись в регистры mmx и вывод из них в память займет дополнительное время, в результате выигрыш от такого копирования будет исчезающе мал (по сравнению с той же CopyMemory). 

потому что я не копирую весь массив в битмап, а лишь часть его. CopyMemory тоже не волшебством работает, пока в тестах победил вариант с копированием через регистры MMX (по 4 байта в регистре, но с movq по 8, я обычно парой запускаю, это 16).
Еще одна фича - у битмапа в памяти строки наоборот.

Цитата

 А я и не говорил что нужно адресовать байты.

что быстрее:
Код

movq  mm0, [esi]
movq  mm1, [esi+8]
movq  [edi], mm0
movq  [edi+8], mm1

или 
Код

QP.SetPixel(x, y, ((pix shl 8) shr 24)+(((pix shl 16) shr 24) shl 8)+((pix shl 24) shr 8));

? вот о чем я, то что сканлайн дал адрес - это одно, то что нам в этот адрес надо записать (и главное как записать) - другое.


--------------------
user posted image
PM MAIL WWW   Вверх
AntonN
Дата 11.12.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



Проект, выпиленый.
Кроме самого массива 3000*3000 создается дополнительный под размер вывода, на который ресайзится большой, потом этот меньший выводится в битмап, битмап на канву

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  test.rar 22,52 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
RESIN
Дата 11.12.2010, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.10.2010

Репутация: нет
Всего: нет



AntonN: Спасибо огромное за пример!  smile  Допилил его до минимума, разбираюсь )) На выводе, при развороте на весь экран, дает >50 кадров за 1000 тиков.

Добавлено @ 10:30
Вопрос теперь, ко всем. Какой код будет работать быстрее?
Этот:

Код

  A:=pix shr 24;
  B:=(pix shl  8) shr 24;
  G:=(pix shl 16) shr 24;  
  R:=(pix shl 24) shr 24;


или этот:

Код

  A:=pix shr 24;
  B:=(pix shr 16) and $000000FF;
  G:=(pix shr 8) and $000000FF;  
  R:=pix and $000000FF;


A, B, G, R : byte;
pix : longint;

Это сообщение отредактировал(а) RESIN - 11.12.2010, 10:31
PM MAIL   Вверх
x128
Дата 14.12.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 29.9.2009

Репутация: 5
Всего: 7



Быстрей будет такой код:
Код

type
  TRGB = packed record
    r,g,b,a: byte;
  end;

var
  p: TRGB;
  pix: integer;
...
  DWORD(p):=pix;


PM MAIL WWW   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.