Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Dmitry Kalinin                       2:5009/5.43    22 Sep 2001  21:44:12
 To : Alexander Dyachenko
 Subject : Re: ZBuffer
 -------------------------------------------------------------------------------- 
 
 
 22 Сен 01 15:00, Alexander Dyachenko -> All:
 
  AD> Э-э-эй!!! All, ты меня слышишь?!! Привет. *Ж8-)*
 
  AD>  Hарод, объясните, пожалуйста, как реализовать ZBuffer. Принцип я
  AD> понял, но теперь встала задача реализации. Когда вычисляется глубина
  AD> точки (x,y), то какие это x и y? Если те, что уже спроецированы,
  AD> получается вигня, да оно и так понятно. А если те, что до
  AD> проецирования (проход по трёхмерной грани) то, как это добро вывести
  AD> на экран. При проецировании каждой точки получаются "щели". Hа сколько
  AD> я сейчас представляю, надо чтобы разрешение экрана было меньше чем у
  AD> ZBuffer'а, или используется интерполяция? Hе уж-то он так тупо и
  AD> задуман, или я не понял идеи и сделал из самого плохого алгоритма ещё
  AD> хуже?
 
  AD>  *P.S.* Hикаких других, подходящих эх нет.
 
     Очень просто, есть экран screen[x, y] и еще один такой экран buffer[x, y].
 Проецируем точку, получаем координаты x` и y`, проверяем в буфере значение с
 координатами x` и y` со значением Z проецируемой точки. Если значение в буфере
 больше, то выводим нашу точку на экран и заносим в буфер новое значение.
 Еще обычно вместо сравнения z сравнивают значения 1/Z.
      Вот кусочек кода из моей проги:
         ECX   - кол-во точек в прямой
         EDI   - начало прямой
         ESI   - начало в буфере
         EDX   - цвет для заливки
         st    - текущее значение 1/Z
         st(1) - приращение 1/Z за одну итерацию
         ...
         xor     ebx, ebx
         @pixel_loop:
                 fcom    dword ptr [esi + ebx*4]
                 fstsw   ax
                 shr     eax, 9
                 jc      @z_smaller
                         fst     dword ptr [esi + ebx*4]
                         mov     dword ptr [edi + ebx*4], edx
                 @z_smaller:
                 fadd    st, st(1)
                 inc     ebx
         dec     ecx
         jne     @pixel_loop
 Dmitry
 ... "Что нас ждет море хранит молчанье,  Жажда жить сушит сердца до дна" (с)
 Ария.
 --- 0f 0f 0e 0e 0e 0e 0c 0c 0a 09 09 06 03 00 00 00 ДВБВДБДДВДДДДДБДДДДД
  * Origin: mailto: dim0k@mail.ru (2:5009/5.43)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ZBuffer   Alexander Dyachenko   22 Sep 2001 15:00:10 
 Re: ZBuffer   Dmitry Kalinin   22 Sep 2001 21:44:12 
 ZBuffer   Aleksey Malov   23 Sep 2001 01:46:48 
Архивное /ru.algorithms/27843baccfb2.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional