· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.DIRECTX.OPENGL —› AGI ?! и FPU (и radial blur, и OpenGL tutorial на FASM)

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Май 7, 2004 10:27:16

Привет. Вот пишу в tutorial про radial blur. Не знаю то ли это у меня метод такой тормознутый, но на моей GeForce 4 SE глюки
ужасные. Там есть такой участок (переменные используются при растягивании текстуры blur'а)
;fldz
fld [blurDelta]
fadd [blurInc]
fstp [blurInc]
fld [blurDec]
fsub [blurDelta]
fstp [blurDec]
fld [blurAlpha]
fsub [alphaDelta]
fstp [blurAlpha]

так вот, если раскоментировать fldz, то тормоза исчезают, но blur становится очень маленьким ;( Не знаю, может быть это какой-то
AGI, на FPU вообще такое есть ?
полный соурс в аттаче.

_942649875__rblur.rar


Дата: Май 7, 2004 13:59:47

Замени
invoke SetPixelFormat,ebp,5,ebx

на
        invoke ChoosePixelFormat,ebp,esp,sizeof.PIXELFORMATDESCRIPTOR+10000h,\
                PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER,\
                PFD_TYPE_RGBA+2000h,ebx,ebx,ebx,\
                PFD_MAIN_PLANE shl 16,ebx,ebx,ebx
        invoke SetPixelFormat,ebp,eax,esp
        add esp,sizeof.PIXELFORMATDESCRIPTOR


Дата: Май 8, 2004 00:10:01

Так ведь это тоже самое :) См. статью в Hugi "writing 512b intro" от upi...


Дата: Май 8, 2004 03:03:34

tylerdurden
Ну не знаю ... У меня после замены стало нормально работать, а до этого жутко тормозило (~0.05 FPS). А вот fldz на скорость никак не влиял.


Дата: Май 8, 2004 03:33:04

У меня на 98-й вобще работать отказалось и зависло..


Дата: Май 8, 2004 19:56:00

tylerdurden
Действительно, если раскоментарить fldz работает заметно быстрее. А вот если вместо этого добавить то, что посоветовал Black_mirror, тормозит также. Дальнейшие эксперименты показали, что fldz можно заменить любой инструкцией погружения в стек ФПУ. Видимо, лишний параметр в стеке влияет на работу какой-то функции. Времени особо разбираться нет, но направление пристального внимания я постарался указать.


Дата: Май 8, 2004 22:57:24

Это и понятно... вот че с этим делать ?


Дата: Май 8, 2004 23:13:08 · Поправил: n0p

tylerdurden
Нуу... Отладчик должен помочь в этом нелегком деле. Вобще вопрос интересный. Будет побольше времени - поковыряю.


Дата: Май 8, 2004 23:20:53

Спасибо. Ну пАмахите ж ! дело то благородное (tutorial'ы да еще на fasm'е ;)


Дата: Май 8, 2004 23:21:11

tylerdurden
fldz - это совершенно не правильно!
fldz; на восьмой итерации стек сопроцессора оказывается полностью заполнен
fld [blurDelta]; и при выполнении этой команды в st0 оказывается NAN
fadd [blurInc] 
fstp [blurInc]; а здесь этот NAN сохраняется
fld [blurDec]; blurDec и blurAlpha вычисляются нормально
fsub [blurDelta]; так как теперь появился свободный регистр 
fstp [blurDec] 
fld [blurAlpha] 
fsub [alphaDelta] 
fstp [blurAlpha]
invoke glColor4f,1.0f,1.0f,1.0f,[blurAlpha]
invoke glBegin,GL_QUADS
invoke glTexCoord2f,[blurInc],[blurDec];<- а далее NAN попадает сюда
invoke glVertex2i,ebx,ebx
invoke glTexCoord2f,[blurInc],[blurInc]
invoke glVertex2i,ebx,[screenHeight]
invoke glTexCoord2f,[blurDec],[blurInc]
invoke glVertex2i,[screenWidth],[screenHeight]
invoke glTexCoord2f,[blurDec],[blurDec]
invoke glVertex2i,[screenWidth],ebx
invoke glEnd 

Я не знаю что OpenGL делает с этим NANом, но у меня на скорость он никак не влияет. При установке 5 формата пикселей рисование происходит прямо на первичной поверхности. Правда на Radeon8500 рисуется очень медленно(но раза в 3 быстрее чем на S3 8). Мой же кусок кода устанавливает 3 формат пикселей. И с ним все работает на ура.


Дата: Май 8, 2004 23:31:35

Black_mirror
Я чувствовал! :) Только спьяну не смог понять причину беспокойства. Действительно, fldz там немного не к месту.

tylerdurden
А чтобы не тормозило, надо что-то менять в алгоритме (Например, использовать DirectX). OpenGL больше проц мучает - видюха ему мало интересна. А DiretX как раз наоборот работает.


Дата: Май 8, 2004 23:38:02

Хмм... отрисовать 25 прямоугольничков с текстурой уже туго ? Не, тут че-то не то :(
П.С. А я слышал наоборот, DirectX больше загружает проц...


Дата: Май 9, 2004 00:10:54

А какой др. алгоритм ? Алгоритм то самый простой и распространенный... В аттаче пример от NeHe не могет ли кто скомпилить его на другое разрешение (>640x480 на таком то и мой не тормозит) а то у меня Cшки нету ?

П.С. Да уж, tutorial по OpenGL'у писать под DirectX :) Кстате какая еще первичная поверхность в OpenGL ?! Да, 3 формат пикселей это без поддержки double buffer...

598973919__lesson36.zip


Дата: Май 9, 2004 01:06:58

tylerdurden
Да, 3 формат пикселей это без поддержки double buffer...
С поддержкой, а вот 5ый без двойного буфера и без аппаратного ускорения 8)

_1431496323__Lesson36.exe


Дата: Май 9, 2004 01:12:26

Тогда почему все моргает если установить 3 ? ;(

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084