|
|
| Посл.отвђт | Сообщен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 ? ;( |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084 |