Самоучитель по 3dsmax 7

         

Кроме того, требует более подробного рассмотрения фрагмент с add и adc, об этом более подробно...


Кроме того, требует более подробного рассмотрения фрагмент с add и adc, об этом более подробно рассказано чуть ниже.

И, наконец, цитата из fatmap2.txt - 4-тактовый inner loop, использующий 16:16 fixedpoint. Недостатки - текстура должна быть выравнена на 64k; есть две команды adc, которые могут запросто испортить спаривание. Кстати, рекомендую скачать этот самый fatmap2.txt; например, по этому адресу: ftp://ftp.hornet.org/pub/demos/code/3d/trifill/texmap/fatmap2.zip. ; текстура должна быть выравнена на 64k ; ; верхние 16 бит | ah/bh/ch/dh | al/bl/cl/dl ; -----------------+----------------+---------------- ; eax = дробная часть u | - | - ; ebx = сегмент текстуры | целая часть v | целая часть u ; edx = дробная часть v | целая часть dv | целая часть du ; esi = дробная часть du | 0 | 0 ; ebp = дробная часть dv | 0 | 0 ; ecx = длина линии ; edi = буфер lea edi,[edi+ecx] ; edi += ecx neg ecx ; ecx = -ecx inner: mov al,[ebx] ; al = texture[v][u] add edx,ebp ; обновляем дробную часть v adc bh,dh ; обновляем целую часть v (учитывая ; перенос от дробной) add eax,esi ; обновляем дробную часть u adc bl,dl ; обновляем целую часть u (учитывая ; перенос от дробной) mov [edi+ecx],al ; outputBuffer[ecx] = al inc ecx jnz inner

Этот цикл, с виду, ничем не лучше цикла для 24:8 fixedpoint.



Содержание раздела