Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Метод Брезенхема. Прямой доступ к видео памяти.   Найти похожие ветки 

 
Stef   (2004-10-09 08:34) [0]

Здравствуйте. Есть такой метод Брезщенхема восьмисвязный для рисования прямой. Этот метод по теории должен работать быстрее стандартных функций рисования прямой в несколько раз. Вот как дан он:

Procedure line_8(x1,y1,x2,y2: integer; Canva: TCanvas; Color: TColor);
Var x,y,s1,s2,dx,dy,e,z, i: Integer;
   change: boolean;
Begin
  x:=x1;
  y:=y1;
  dx:=abs(x2-x1);
  dy:=abs(y2-y1);
  s1:=sign(x2-x1);
  s2:=sign(y2-y1);
  If dy>dx then
    Begin
      z:=dx;
      dx:=dy;
      dy:=z;
      change:=true
    end
    else change:=false;
  e:= 2*dy-dx;
  for i:=1 to dx do
    begin
      Canva.Pixels[x, y]:=Color;
      while e>=0 do
        begin
          If change then x:=x+s1 else y:=y+s2;
          e:=e-2*dx;
        end;
      If change then y:=y+s2 else x:=x+s1;
      e:=e+2*dy
    end;
  Canva.Pixels[x, y]:=Color;
end;

но этот метод не то что быстрее он еще и тормознее в несколько раз. Слышал что можно осуществить прямой доступ к видео памяти и в результате чего Canva.Pixels[x, y]:=Color работает быстрее и метод сам может работать быстрее.
Вообщем подскажите как можно оптимизировать этот метод что бы он работал быстрее стандарт. функций?


 
Alx2 ©   (2004-10-09 09:19) [1]

DirectX - прямой доступ.
По остальному, надеюсь, поможет линк
http://www.delphimaster.ru/articles/pixels/index.html


 
VMcL ©   (2004-10-09 09:33) [2]

>>Stef  (09.10.04 08:34)

По твоему GDI, DirectX, OpenGL etc. дураки писАли?


 
Stef   (2004-10-09 10:05) [3]

2 Alx2 ©   (09.10.04 09:19) [1]
пасибо. статья действительно помогла.


 
Zacho ©   (2004-10-09 11:05) [4]

Имхо, на современных компах гораздо более простой ЦДА будет работать быстрее алгоритма Брезенхема. Вот на Спектруме, да Брезенхем был быстрее.
P.S. Это действительно imho, могу и ошибаться, не проверял.


 
хм ©   (2004-10-09 13:03) [5]

ты думаешь, в gdi line реализована не по этому методу? Ех, жалко у меня ща softice нет...


 
Григорьев Антон ©   (2004-10-10 09:22) [6]


> хм ©   (09.10.04 13:03) [5]
> ты думаешь, в gdi line реализована не по этому методу? Ех,
> жалко у меня ща softice нет...

Да большинство видеоадаптеров сейчас вообще имеет аппаратное ускорение рисования прямых, а GDI умеет этим пользоваться, а уж аппаратное ускорение никакой программный алгоритм не обгонит. Впрочем, программное рисование примитивов GDI тоже реализует - например, для DC в памяти, которые никакого аппаратного ускорения не имеют.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
4-1095793869
ser_ega
2004-09-21 23:11
2004.10.31
Телефон, мини-АТС, определитель!


1-1098021917
kein
2004-10-17 18:05
2004.10.31
Excel файлы


4-1096064034
VereM
2004-09-25 02:13
2004.10.31
Как узнать температру проца в дельфи.


6-1093021889
Asd
2004-08-20 21:11
2004.10.31
TcpClient и TcpServer или Indy Delphi 7


4-1096103320
X-Disa
2004-09-25 13:08
2004.10.31
Самоудаляущаяся прога





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский