Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: 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 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.023 c
1-1098205530
Sirruf
2004-10-19 21:05
2004.10.31
Alignment in TEdit


1-1097765115
greenrul
2004-10-14 18:45
2004.10.31
Изменение свойства Checked в ActionMainMenuBar


14-1097137128
Игорь Шевченко
2004-10-07 12:18
2004.10.31
Вопрос к бывшим владельцам старого железа


1-1097648355
denis24
2004-10-13 10:19
2004.10.31
form3.showmodal


3-1096599868
AZ
2004-10-01 07:04
2004.10.31
Неоправданное распухание файла .DB





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский