forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   dx7.dll - не включается анизотропная фильтрация. (http://forum.boolean.name/showthread.php?t=4341)

Diplomat 04.09.2007 21:59

dx7.dll - не включается анизотропная фильтрация.
 
Доброго времени суток, и, собственно, Сабж.
Подключаю библиотеку, устанавливаю DX7_SetTextureStageState. Эффекта ноль. Фильтрация текстур как была биленейная, так и осталась. Сопоставлял скриншоты попиксельно: разницы нет.
Кто использовал библиотеку, будьте добры, поделитесь догадками по исправлению ситуёвины.
Спасибо заранее.
...
Сразу замечу: в настройках видеодрайвера (в Винде) указано, что тип фильтрации текстур и уровень анизотропной фильтрации выбирается приложением. Так что вопрос, похоже, лежит внутри Блица, а не снаружи.
...
Сразу замечу2:
Код такой, ежели что:
Код:

DX7_SetSystemProperties(SystemProperty$("Direct3D7"), SystemProperty$("Direct3DDevice7"), SystemProperty$("DirectDraw7"), SystemProperty$("AppHWND"), SystemProperty$("AppHINSTANCE"))
DX7_SetTextureStageState(D3DTSS_MAXANISOTROPY,8,3)
DX7_SetTextureStageState(D3D_MAGFILTER,8,MAG_ANISOTROPIC)
DX7_SetTextureStageState(D3D_MINFILTER,8,MIN_ANISOTROPIC)
DX7_SetTextureStageState(D3D_MIPFILTER,8,MIP_LINEAR)
DX7_SetMipmapLODBias(bias,8)


ЛысыЙ_Чук-Иванчук 04.09.2007 22:55

Re: dx7.dll - не включается анизотропная фильтрация.
 
Я кода начал юзать сразу заметьл разницу(работает или нет) в тоненкой сетке которая была видна не перед носом, а за километр!
Незнаю что ты неправельно делаеш, но сказать хочу одно ставить фильтрацию нужно на -2(или менше)

moka 04.09.2007 23:16

Re: dx7.dll - не включается анизотропная фильтрация.
 
Вот тут я делал, всё ок было.

Черный крыс 05.09.2007 09:19

Re: dx7.dll - не включается анизотропная фильтрация.
 
Разница еще какая есть! =)))

Цитата:

; GetTextureStageState(D3D_TEXTURE_STAGE_STATE_TYPE, index%)
; SetTextureStageState(D3D_TEXTURE_STAGE_STATE_TYPE, index%, value%)

; GetMipmapLODBias(index%) ; B3D Default = 0.0
; SetMipmapLODBias(bias#, index%)

; в обеих Set... командах, индексы от 0 до 7 выбирают
; 1 текстурный стейдж, или 8 для установки всех текстурных стейджей одновременно


; D3D_TEXTURE_STAGE_STATE_TYPE
Const D3D_MAGFILTER = 16 ; D3DTEXTUREMAGFILTER filter To use For magnification
Const D3D_MINFILTER = 17 ; D3DTEXTUREMINFILTER filter To use For minification
Const D3D_MIPFILTER = 18 ; D3DTEXTUREMIPFILTER filter To use between mipmaps during minification
Const D3DTSS_MAXANISOTROPY = 21
Const D3DTSS_TEXCOORDINDEX = 11

; D3DTEXTUREMAGFILTER
Const MAG_POINT = 1
Const MAG_LINEAR = 2 ; B3D default
Const MAG_FLATCUBIC = 3
Const MAG_GAUSSIANCUBIC = 4
Const MAG_ANISOTROPIC = 5

; D3DTEXTUREMINFILTER
Const MIN_POINT = 1
Const MIN_LINEAR = 2 ; B3D default
Const MIN_ANISOTROPIC = 3

; D3DTEXTUREMIPFILTER
Const MIP_NONE = 1
Const MIP_POINT = 2
Const MIP_LINEAR = 3 ; B3D default


Global d3d,dev7,draw7,hwnd,instance
Global anistropicallowed=1
Global texturesinited=0
Function Textureinit() ; можете вызывать после Graphics3D, но если не сделаете вызов, то он произойдет во время первого вызова EnableAnistropic
d3d=SystemProperty$("Direct3D7")
dev7=SystemProperty$("Direct3DDevice7")
draw7=SystemProperty$("DirectDraw7")
hwnd=SystemProperty$("AppHWND")
instance=SystemProperty$("AppHINSTANCE")
anistropicallowed=1
If Not DX7_SetSystemProperties(d3d,dev7,draw7,hwnd,instan ce) Then TextureFilter "",9:anistropicallowed=0:RuntimeError "Something wrong with DX7_sys_prop"
texturesinited=1
Return anistropicallowed
End Function



Function EnableAnistropic(bias#=-0.2) ;ВНИМАНИЕ: вызов очищает текстурные фильтры (color, alpha, mask и т.д.)
If texturesinited=0 Then Textureinit()
If anistropicallowed=1 Then
DX7_SetTextureStageState(D3DTSS_MAXANISOTROPY,8,3)

DX7_SetTextureStageState(D3D_MAGFILTER,8,MAG_ANISO TROPIC)
DX7_SetTextureStageState(D3D_MINFILTER,8,MIN_ANISO TROPIC)
DX7_SetTextureStageState(D3D_MIPFILTER,8,MIP_LINEA R)
DX7_SetMipmapLODBias(bias,8)
EndIf
End Function
Function EnableAnistropic2(bias#=-0.2) ;ВНИМАНИЕ: вызов очищает текстурные фильтры (color, alpha, mask и т.д.)
If texturesinited=0 Then Textureinit()
If anistropicallowed=1 Then
DX7_SetTextureStageState(D3DTSS_MAXANISOTROPY,0,3)

DX7_SetTextureStageState(D3D_MAGFILTER,0,MAG_ANISO TROPIC)
DX7_SetTextureStageState(D3D_MINFILTER,0,MIN_ANISO TROPIC)
DX7_SetTextureStageState(D3D_MIPFILTER,0,MIP_LINEA R)
DX7_SetMipmapLODBias(bias,0)
EndIf
End Function
Function EnableLinear(bias#=-0.2) ;ВНИМАНИЕ: вызов очищает текстурные фильтры (color, alpha, mask и т.д.)
If texturesinited=0 Then Textureinit()
If anistropicallowed=1 Then
DX7_SetTextureStageState(D3DTSS_MAXANISOTROPY,8,3)

DX7_SetTextureStageState(D3D_MAGFILTER,8,MAG_POINT )
DX7_SetTextureStageState(D3D_MINFILTER,8,MIN_POINT )
DX7_SetTextureStageState(D3D_MIPFILTER,8,MIP_LINEA R)
DX7_SetMipmapLODBias(bias,8)
EndIf
End Function

ЛысыЙ_Чук-Иванчук 05.09.2007 12:35

Re: dx7.dll - не включается анизотропная фильтрация.
 
И в чем же она собственно вырожается ета Разница?

moka 05.09.2007 13:17

Re: dx7.dll - не включается анизотропная фильтрация.
 
Ну с анисотропной фильтрацией, ты на расстоянии в киллометр будешь различать что там у тебя трава, а там камень (текстуры), а вот со стандартной биллинейной, у тебя будет просто тупо размыто всё, и ты нифига не различшь, только по цвету. :) Ты попробуй глянь разницу, с и без, тогда уловишь.
Используя аисотропку, можно отказаться от 2048х2048 или 1024х1024 текстур, используя 512х512 и быть уверенным что на расстоянии эта текстура будет смотреться намного лучше и чётче чем с биллинейной фильтрацией. Да и глянь на сильно повёрнутые трианглы к камере, текстуры на них тоже Очень размыты. Впрочем, попробуй с и без.

Diplomat 05.09.2007 19:15

Re: dx7.dll - не включается анизотропная фильтрация.
 
Мд-а. Всё таки, ошибок в моём коде нет, но никакой разницы в изображении нет также. Анизотропная фильтрация у меня на ноутбуке не включается. Явно особенность то ли ноутбука, то ли отношений ноутбука с Блицем.
Всё равно спасибо за помощь! )

moka 06.09.2007 13:40

Re: dx7.dll - не включается анизотропная фильтрация.
 
Diplomat, добавь пожалуста, что за видео карта там стоит, и какие у неё там приколы. А то малоли ктонибудь столкнёться тоже с этим.

Diplomat 06.09.2007 14:26

Re: dx7.dll - не включается анизотропная фильтрация.
 
Видеокарта встроенная, Radeon9000IGP. Из приколов- 32Мб видеопамяти с возможностью высасывания обьёмов до 128Мб из памяти оперативной, и аппаратная поддержка ДХ7.

MiXaeL 06.09.2007 22:28

Re: dx7.dll - не включается анизотропная фильтрация.
 
А что за библиотека вообще?

johnk 07.09.2007 03:23

Re: dx7.dll - не включается анизотропная фильтрация.
 
dx7. Это вроде возможность писать на чистом ДХе.

MiXaeL 07.09.2007 22:43

Re: dx7.dll - не включается анизотропная фильтрация.
 
и где ее достать?

johnk 08.09.2007 03:09

Re: dx7.dll - не включается анизотропная фильтрация.
 
Попроси у Дипломата :)

Diplomat 08.09.2007 11:52

Re: dx7.dll - не включается анизотропная фильтрация.
 
Не знаю почему, но ссылки на разработчика не работают.
Но лежит она во многих местах в Сети. Брать можно, к примеру, отсюда:
http://blitz.pp.ru/forum/attachment.php?s=&postid=29976

P.S. Библиотека не поможет писать на чистом ДХ. Она просто добавляет Блицу несколько приятных возможностей, которые очень не помешали ему и официально.


Часовой пояс GMT +4, время: 11:58.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot