Главная страница
    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.035 c
14-1096217151
beginner707
2004-09-26 20:45
2004.10.31
TSplitter Neponyatka


14-1097231421
Jaxtor
2004-10-08 14:30
2004.10.31
UML моделирование


3-1096992665
Виктор
2004-10-05 20:11
2004.10.31
Номер порта


6-1092992182
Den
2004-08-20 12:56
2004.10.31
Вопрос, по закачкам, с помощью делфи


4-1095664578
vasili
2004-09-20 11:16
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский