Главная страница
    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.04 c
4-1096091662
Zombik
2004-09-25 09:54
2004.10.31
Как закрыть окно с содержимым CD ?


1-1098165277
Mishenka
2004-10-19 09:54
2004.10.31
Обработка события OnClick???


1-1098173227
xman
2004-10-19 12:07
2004.10.31
Не отображать Hint`ы в TreeView над объектами


3-1096975889
Yagovdik
2004-10-05 15:31
2004.10.31
DBGrid и скроллер (мышиный)


3-1096476993
сергей1
2004-09-29 20:56
2004.10.31
хранимые процедуры в access





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