Сглаживание

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сглаживание

Сообщение Yurich » 04.05.2003 (Вс) 19:11

... именно, как его включить в DX7? Подойдет пример на СИ, Delphi.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.05.2003 (Вс) 20:56

ВСЕМ СПАСИБО, я нашел. Но моя карта (GF2MX) этот режим не поддерживает.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 06.05.2003 (Вт) 9:04

Разве GF2MX не поддерживает хоть что-то из DX7?

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 06.05.2003 (Вт) 19:25

Что-то, может и поддерживает, а вот сглаживание...?. Проверял М-софтовской утилитой из д-икс8. Результат с этим режимом и без него одинаков.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 09.09.2003 (Вт) 16:56

Yurich писал(а):ВСЕМ СПАСИБО, я нашел. Но моя карта (GF2MX) этот режим не поддерживает.

Слушай, напиши мне пож. , как это делается??? Как вкл. сглаживание этокое...

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 09.09.2003 (Вт) 22:46

Eсть такая штука
Dim Caps As DDSCAPS2 ' Описание аппаратных возможностей
и есть
Dim dds4Primary As DirectDrawSurface4 ' Передний буфер
Dim dds4Back As DirectDrawSurface4 ' Задний буфер

Перед созданием буфера надо
Caps.lCaps = DDSCAPS_3DDEVICE '... Or
Caps.lCaps2 = DDSCAPS2_HINTANTIALIASING '... Or
А затем
Set dds4Back = dds4Primary.GetAttachedSurface(Caps)

Буфер обязательно до.бы 3DDEVICE, иначе (как пишет SDK) ANTIALIASING работать не будет.

Не уверен, может я что-то упустил, у меня эта гадюка не включается ни на Primary, ни на Back!

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 10.09.2003 (Ср) 13:50

Спасибо большое!!! Но и у меня она не хочет пахать...ээх....во всё этот
форс виноват...
Слушай, если тебе не сложно и есть какая-нибудь документация или примеры всяких разных эффектов с DirectX, то пришли мне на мыло...
Просто у меня нет SDK и никиак не могу найти его...
Хоть что-нибудь...
Заранее благодарю...
voyka2003@mail.ru

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 10.09.2003 (Ср) 21:11

Загляни в тему http://bbs.vbstreets.ru/viewtopic.php?t=2116
Там я выложил все свои достижения открытым кодом.
SDK качай из сайта Microsoft (кстати, 6-й написан лучше, чем 7-й, но подходит для DX7 на 95%), вариантов море - полный, укороченный, с примерами и без.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 11.09.2003 (Чт) 13:52

Большое пасибо!!! Есть же добрые люди.... :lol:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 01.10.2003 (Ср) 10:55

Слушай Юрик, а ты знаешь, как сделать эффект тумана?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 01.10.2003 (Ср) 13:32

В восьмом директе достаточно четырех строк:
Код: Выделить всё
    d3dDevice.SetRenderState D3DRS_FOGCOLOR, FogColor
    d3dDevice.SetRenderState D3DRS_FOGDENSITY, FogDens
    d3dDevice.SetRenderState D3DRS_FOGTABLEMODE, D3DFOG_EXP
    d3dDevice.SetRenderState D3DRS_FOGENABLE, True

Последний параметр в трех первых строках подбирается.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 01.10.2003 (Ср) 20:46

Vovik писал(а):Слушай Юрик, а ты знаешь, как сделать эффект тумана?


Для ДХ7:
Dim Scene As Direct3DRMFrame3 ' Фрейм сцены
' Включить туман
With Scene
.SetSceneFogMode D3DRMFOG_LINEAR
.SetSceneFogMethod D3DRMFOGMETHOD_TABLE
.SetSceneFogColor dx.CreateColorRGB(0, 0, 0)
.SetSceneFogParams 1000, 5000, 0.0001
.SetSceneFogEnable D_TRUE
End With

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 02.10.2003 (Чт) 15:31

Спасибо большое! :P Но может кто ещё знает какие-нть интересные эффекты? Желательно на 8 иксе...

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 02.10.2003 (Чт) 17:16

Конкретнее!

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 02.10.2003 (Чт) 21:07

Yurich писал(а):Конкретнее!

Ну я даже не знаю. Например то, что часто используется в играх сглаживание, туман и т.д. :roll:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 02.10.2003 (Чт) 21:37

Кстати, чё то не пахает туман на 8 иксе...на 7 - не пробовал... :cry:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 03.10.2003 (Пт) 0:42

Vovik писал(а):Кстати, чё то не пахает туман на 8 иксе...на 7 - не пробовал... :cry:

Пахает, это точно, причем лучше, чем в седьмом. Это у тебя что-то в параметрах не включено.

Dim D3DDevice As Direct3DDevice8 ' Устройство рендеринга
Dim fFogStart As Single
Dim fFogEnd As Single
fFogStart = 0
fFogEnd = 500
D3DDevice.SetRenderState D3DRS_FOGCOLOR, D3DColorXRGB(100, 100, 100)
' ДХ7 и 8 поддерживают только FOG_LINEAR!!!
D3DDevice.SetRenderState D3DRS_FOGTABLEMODE, D3DFOG_LINEAR
D3DDevice.SetRenderState D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR
D3DDevice.SetRenderState D3DRS_RANGEFOGENABLE, 0 'False
D3DDevice.SetRenderState D3DRS_FOGSTART, FtoDW(fFogStart)
D3DDevice.SetRenderState D3DRS_FOGEND, FtoDW(fFogEnd)
D3DDevice.SetRenderState D3DRS_FOGENABLE, 1 ' включить туман

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 03.10.2003 (Пт) 12:42

Не хочет он работать. :? Как он хоть выглядит?? Если тебе не сложно, то дай пример, который работает...
и что значит :
FtoDW(fFogStart)
FtoDW(fFogEnd)?
:?:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 03.10.2003 (Пт) 17:00

Погодь, попытаюсь всунуть в форум!
А вообще Ты можешь туман сразу и не увидеть. Тут надо покрутить параметры. FogStart - расстояние от камеры, где начинается действие тумана, FogEnd и далее - где туман насышен до максимума.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 03.10.2003 (Пт) 19:04

Yurich писал(а):Погодь, попытаюсь всунуть в форум!
А вообще Ты можешь туман сразу и не увидеть. Тут надо покрутить параметры. FogStart - расстояние от камеры, где начинается действие тумана, FogEnd и далее - где туман насышен до максимума.

Пробовал я регулировать! Вроде получилось, но текстуры просто становятся серыми (затуманились блин)! Чё то он не то туманит! :?

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 03.10.2003 (Пт) 21:32

Да, и ещё один маленький нюанс... А если мне нужно затуманить не всё пространство, а создать туманное облако?? И вообще реально это? :?:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.10.2003 (Сб) 5:31

Vovik писал(а):Да, и ещё один маленький нюанс... А если мне нужно затуманить не всё пространство, а создать туманное облако?? И вообще реально это? :?:

Реально, только для этого нужно создать поверхность. ДХ участки экрана с фоновым цветом туманом не заливает. Еще надо покрутить с плотностью тумана. В дх7 есть такой параметр, в восьмом я пока не нашел. Ниже мой примерчик, может что понравится.
У вас нет доступа для просмотра вложений в этом сообщении.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 04.10.2003 (Сб) 9:21

Yurich, у меня получилось сделать туман, но только по примеру Майкла в теме "Кол-во бит на пиксель..."(кстати всё работает), но там он использовал не Linear, a Exp, а tmp вообще покакой-то хитрой формуле выщитывается...Так, вот...оно то всё работает, но идёт какими-то линиями...ща посмотрю твой пример... :roll:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.10.2003 (Сб) 10:37

Vovik писал(а):... но там он использовал не Linear, a Exp

Вот выписка из SDK8. Обрати внимание на последнюю строчку!
D3DFOG_NONE
No fog effect.
D3DFOG_EXP
Fog effect intensifies exponentially, according to the following formula.
F=1/E^(d * dencity)
D3DFOG_EXP2
Fog effect intensifies exponentially with the square of the distance, according to the following formula.
F=1/E^(d * dencity)^2
D3DFOG_LINEAR
Fog effect intensifies linearly between the start and end points, according to the following formula.
F= (end - d) / (end - start)
This is the only fog mode currently supported!!!

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 04.10.2003 (Сб) 12:16

УРА!!!! :D Заработало!!!
Только когда ставишь 16 бит, то появл. полоски, а 32-мя битами - их видно только вооружённым глазом! Во как!!!
А про EXP - не знаю... у меня и оно работало. :lol:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 05.10.2003 (Вс) 11:50

Yurich, помнится, ты говорил, что у тебя GF2M, а какой именно??? Потомучто у меня тоже GF2MX400 на 64 метра, сглаживание гадюка - не поддерживает. А вот с Alpha - не могу разобраться... У тебя Alph'у поддерживает или нет? :roll:
И ещё.. Что дают эти строчки :
Call D3DX.CheckTextureRequirements(D3DDevice, 0, 0, 7, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED)
и :

D3DDevice.SetTextureStageState 0, D3DTSS_MIPFILTER, D3DTEXF_LINEAR
В SDK смотрел, там так написано, что ничерта не понятно...
:? Я в твоём проекте вторую строку врубил, так кубик приятнее стал выглядеть...немного размазывается.... :lol:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 05.10.2003 (Вс) 12:35

Yurich, ты меня извини, что я на тебя обвалился с вопросами, но просто больше никто(почти) мне не отвечает и не помогает...Читая SDK
-я начинаю глючить ещё больше. А ты нормально объясняешь!!! :wink:
Да! Я ещё раз прочёл тему "Поспорьте со мной..", как я понял все эффекты поддерживаются, но я их не могу включить елки-палки, что же это такое??? :cry:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 05.10.2003 (Вс) 17:31

Вот надыбал код FPS'ки, которая показывает не аппаратные FPS, а видимые(связано с особенностями человеческого зрения) :

Public Declare Function timeGetTime Lib "winmm.dll" () As Long

Public Sub ComputeFPS()

If fpsCount = 24 Or fpsTLast = 0 Then
If fpsTLast <> 0 Then FPS = CStr(Round(CSng(30000 / (timeGetTime - fpsTLast)), 1))
fpsTLast = timeGetTime
fpsCount = 0
End If
fpsCount = fpsCount + 1

End Sub

У меня во всяком случае работает постабильнее (но показывает порядка на 10 кадров больше, чем обычные)... :lol:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 08.10.2003 (Ср) 18:04

Спасибо, но это стандартный код от мелкософт. Кстати, не самый лучший!


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList