Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
1-1098261593
Zhekson
2004-10-20 12:39
2004.10.31
Отсчёт времени(Timer) в отдельном потоке


4-1095947982
MakNik
2004-09-23 17:59
2004.10.31
Имя компьютера


6-1092940023
8ung
2004-08-19 22:27
2004.10.31
Proxy


1-1097650128
Rentgen
2004-10-13 10:48
2004.10.31
Как узнать число-ли переменная S:String;


4-1096207357
Comp
2004-09-26 18:02
2004.10.31
Все-таки как включить поддержку Visual Styles ????




   Наверх