Srodne teme
Kliknite za generisanje liste srodnih tema...
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

D3DXMACRO and D3DXCreateEffectFromFile

[es] :: 3D programiranje :: D3DXMACRO and D3DXCreateEffectFromFile

[ Pregleda: 2979 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon D3DXMACRO and D3DXCreateEffectFromFile26.03.2010. u 17:53 - pre 171 meseci
Pokusavam da iskoristim direktive u shaderu tako sto ih definisem pomocu D3DXMACRO strukture.

Testirao sam jednostavnim shaderom:

Code:


SHADER_CODE

uniform extern float4x4 g_matWVP;

void LightingVS(float3 posL : POSITION0, float2 texCoord : TEXCOORD0, 
                out float4 oPosH : POSITION0, out float2 oTexCoord : TEXCOORD0)
{
    oPosH = mul( float4( posL, 1.0f ), g_matWVP );
    oTexCoord = texCoord;
}

float4 LightingPS(float2 texCoord : TEXCOORD0) : COLOR0
{
    float4  color = 0;
    
    #ifdef COLOR_RED
        color =  float4(1.0f, 0.0f, 0.0f, 1.0f);
    #endif
    
    #ifdef COLOR_BLUE
        color =  float4(0.0f, 0.0f, 1.0f, 1.0f);
    #endif
    
    return color;
}

technique techLighting
{
    pass p0
    {
        vertexshader = compile vs_2_0 LightingVS();
        pixelshader = compile ps_2_0 LightingPS();    
    }
}



Code:


APP_CODE

D3DXMACRO m;
m.Name = "COLOR_RED";
m.Definition = "1";

D3DXCreateEffectFromFile(m_pDevice, L"Shaders/Lighting.fx", &m, 0, 0, 0, &m_pLightingShader, &errors);



Problem je sto se shader ne ucitava, cak i ne prodje ovu (D3DXCreateEffectFromFile) liniju (aplikacija puca) tako da ne mogu da vidim compilation errors.
Bez ovih definicija shader radi ok.

U C++, kao sto znamo, je dovoljno napisati #define COLOR_RED ali posto D3DXMACRO zahteva i Definition parametar ja sam stavio 1.

Ne znam gde gresim.



EOF
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: D3DXMACRO and D3DXCreateEffectFromFile27.03.2010. u 10:49 - pre 171 meseci
oGooglao sam malo i nasao resenje problema.

umesto:

D3DXMACRO m;
m.Name = "COLOR_RED";
m.Definition = "1";

strukturu m treba definisati ovako:

D3DXMACRO m[] = { {"COLOR_BLUE", "1"}, {0, 0} };

Izgleda da se funkciji D3DXCreateEffectFromFile explicitno mora navesti gde je kraj liste parametara {0, 0}.

Izgleda da je D3DXMACRO lose dokumentovan. Resenje sam nasao ovde:
http://www.gamedev.net/community/forums/topic.asp?topic_id=270661




EOF
 
Odgovor na temu

Filip Strugar
Filip Strugar
UK

Član broj: 9871
Poruke: 383
*.zone7.bethere.co.uk.



+1 Profil

icon Re: D3DXMACRO and D3DXCreateEffectFromFile27.03.2010. u 12:57 - pre 171 meseci
Citat:
glorius:
Izgleda da se funkciji D3DXCreateEffectFromFile explicitno mora navesti gde je kraj liste parametara {0, 0}.

Izgleda da je D3DXMACRO lose dokumentovan. Resenje sam nasao ovde:
http://www.gamedev.net/community/forums/topic.asp?topic_id=270661


Khm, ne razumem bas u cemu je problem, sve lepo pise u MSDN dokumentaciji D3DXCreateEffectFromFile() i ostalih funkcija koje primaju D3DXMACRO parametar :)

Citat:

pDefines [in] D3DXMACRO

Optional NULL-terminated array of preprocessor macro definitions. See D3DXMACRO.
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: D3DXMACRO and D3DXCreateEffectFromFile27.03.2010. u 15:50 - pre 171 meseci
Uf, izgleda da nisam lepo video da je null-terminated array koje, do duse, nisam cesto sretao osim u primerima sa null-terminated stringovima :)
EOF
 
Odgovor na temu

Filip Strugar
Filip Strugar
UK

Član broj: 9871
Poruke: 383
*.zone7.bethere.co.uk.



+1 Profil

icon Re: D3DXMACRO and D3DXCreateEffectFromFile28.03.2010. u 13:20 - pre 171 meseci
Jes malo nelogicno - bilo bi smislenije da funkcija prima jos jedan argument koji je broj parametara.

Makar su za D3D10/11 verziju sredili dokumentaciju, malo je jasnije:

Citat:

HRESULT D3DX11CompileFromFile(...)

pDefines [in] D3D10_SHADER_MACRO

Optional. Pointer to an array of macro definitions (see D3D10_SHADER_MACRO). The last structure in the array serves as a terminator and must have all members set to 0. If not used, set pDefines to NULL.



Btw, ako mozes (imas Vistu/Win7) toplo preporucujem da koristis DirectX11 (DirectX10) - mnogo je jednostavniji, bolje organizovan i razumljiviji za rad!
(Ne treba ti DirectX11 graficka, bilo koja DirectX10 - npr NV8800 - ce da radi posao)
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
77.46.233.*

ICQ: 208550327


+14 Profil

icon Re: D3DXMACRO and D3DXCreateEffectFromFile28.03.2010. u 14:36 - pre 171 meseci
Da, slazem se da su mogli da ubace jos jedan arg funkcije mada je ovo, moze se reci, zanimljiv pristup.

Citao sam malo dokumentaciju DX10 i DX11 i proucio primere DX10 i stvarno je sve bolje organizovano.

Inace, imam Vistu i 8600GT.

Mozda je pogresan pristup ali ja bih ipak da se drzim DirectX-a 9 dok ga ne proucim do nekog zadovoljavajuceg nivoa. Kasnije cu 10 i 11 verovatno moci brze da savladam.


EOF
 
Odgovor na temu

[es] :: 3D programiranje :: D3DXMACRO and D3DXCreateEffectFromFile

[ Pregleda: 2979 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Kliknite za generisanje liste srodnih tema...
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.