Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 09.04.2005, 15:53 Titel: Problem mit Shader und HLSL |
|
|
Hallo!
Ich habe heute probiert einen Shader in meiner Scene Klasse einzubauen.
Der wird mit der Shadersprache HLSL geschrieben. Jedoch bleibt mein Objekt immer weiss. Ich habe den Code aus der Dokumentation entnommen, aber ich weiss nicht woran es liegt, es wird alles richtig erzeugt. Ich poste mal meinen Code und hoffe dass ihr mit Shadern Erfahrung habt und mir helfen könnt. Vielleicht habe ich etwas vergessen oder Falsch gemacht.
CPP: | bool CScene::InitShader(void)
{
DWORD dwShaderFlags = 0;
dwShaderFlags |= D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT;
dwShaderFlags |= D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT;
dwShaderFlags |= D3DXSHADER_NO_PRESHADER;
char str[] = "fx/BasicHLSL.fx";
if(FAILED(D3DXCreateEffectFromFile(m_lpD3DDevice,
str,
NULL, // CONST D3DXMACRO* pDefines,
NULL, // LPD3DXINCLUDE pInclude,
dwShaderFlags,
NULL,
&m_pEffect,
NULL )))
{
MessageBox(0,"Shader couldn't be created.","Error",MB_OK);
return 0;
}
}
D3DXMATRIXA16 mWorld;
D3DXMATRIXA16 mView;
D3DXMATRIXA16 mProj;
void CScene::Render(void)
{
UINT iPass, cPasses;
m_lpD3DDevice->SetStreamSource(0, m_lpVB, 0, sizeof(Vertex));
mWorld = m_WorldMatrix;
mProj = m_ProjMatrix;
mView = m_ViewMatrix;
m_pEffect->SetMatrix("g_mWorld", &m_WorldMatrix);
m_pEffect->SetMatrix("g_mView", &m_ViewMatrix);
m_pEffect->SetMatrix("g_mProj", &m_ProjMatrix);
m_pEffect->SetTechnique("Simple");
m_pEffect->Begin(&cPasses, 0);
for (iPass = 0; iPass < 1; iPass++)
{
m_pEffect->BeginPass(iPass);
m_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
m_pEffect->EndPass();
}
} |
Und hier noch die FX Datei:
Code: |
// transformations
float4x4 g_mWorld : WORLD; // World matrix for object
float4x4 g_mView : VIEW;
float4x4 g_mProj : PROJECTION;
float4 roteFarbe = { 1.0,0.0, 0.0, 1.0 };
struct VS_OUTPUT
{
float4 Pos : POSITION;
float4 Diff : COLOR0;
};
VS_OUTPUT VS(float3 Pos : POSITION)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
float4x4 WorldView = mul(g_mWorld, g_mView);
float3 P = mul(float4(Pos, 1), (float4x3)WorldView); // position (view space)
Out.Pos = mul(float4(P,1), g_mProj); // position (projected)
Out.Diff = roteFarbe;
return Out;
}
technique Simple
{
pass P0
{
VertexShader = compile vs_1_1 VS();
}
}
|
Vielen Dank!
Zuletzt bearbeitet von Beni5 am 09.04.2005, 16:58, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.04.2005, 16:25 Titel: |
|
|
Zitat: | float4 roteFarbe = { 1.0, 1.0, 1.0, 0.0 }; |
rote Farbe aber RGB Werte von 1.0, 1.0 und 1.0 ? Das ergibt weiss ^^
versuche das hier:
Zitat: | float4 roteFarbe = { 1.0, 0.0, 0.0, 1.0 }; |
Hab den Alphawert mal auf 1.0 gelegt, kann ja sein das du was mit Transparenzen mal machen möchtest da isses nicht gut wenn Alpha 0.0 und damit unsichtbar wäre  _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 09.04.2005, 16:41 Titel: |
|
|
Achso, da ist mir ein Fehler unterlaufen. Ich habe schon { 1.0, 0.0, 0.0, 0.0 }; in der Fx Datei. Aber habe später rumprobiert und dann das hier reinkopiert.
Es geht leider nicht.  |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 09.04.2005, 18:58 Titel: |
|
|
Evtl haste vergessen die Render/Texturestates zu setzen, also was er alles nutzen sollst, wenn du zB. Texture angegeben hast aber kein VErtexcolor versucht er nur die Textur zu rendern, da du im Shader aber nix mit Texturen machst wird da nix gesetzt,... evtl haste auch keine Textur angegeben. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
abc_d JLI Master Trainee

Alter: 35 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 10.04.2005, 00:29 Titel: |
|
|
Wie du sehen kannst verwende ich garkeine Textur?
Fallen's Tutorial gefällt mir leider nicht sehr... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.04.2005, 13:26 Titel: |
|
|
Beni5 hat Folgendes geschrieben: | Wie du sehen kannst verwende ich garkeine Textur?
Fallen's Tutorial gefällt mir leider nicht sehr... |
Darf ich erfahren warum nicht? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 10.04.2005, 13:49 Titel: |
|
|
Es ist meiner Meinung nach sehr unverständlich und schlecht geschrieben. Es fehlen manchmal Variablen oder sie sind falsch geschrieben, zudem funktioniert das Endresultat bei mir nie.
Ich will dich damit nicht beleidigen, aber ich brauche zuerst mal etwas kompaktes zum Anfangen.
Zudem werde ich es mit deinem Tutorial warscheinlich auch nicht hinkriegen wenn es mit dem kleinen Code oben nicht geht... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.04.2005, 18:32 Titel: |
|
|
Wieso sagt man mir sowas nicht O.o ich kann sowas nur verbessern oder auch nur persönlich besser werden wenn ich meine Fehler kenne. Tjo. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 15.04.2005, 22:55 Titel: |
|
|
Also einen Fehler habe ich schon gefunden, ich habe nämlich das m_pEffect->End(); vergessen  |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 16.04.2005, 00:05 Titel: |
|
|
ja toll...
Ich habe jetzt zeimleich viel rumprobiert aber die Farbe ändert sich nicht. Die FX Datei habe ich mal mit dem HLSL Beispiel probiert und da funktionierte es einwandfrei. ICh habe den Code vom Beispiel sehr weit auskommentiert und festgestellt das eigentlich kein Unterschied zu meinem Code besteht. Kann es sein das ich etwas aufrufen muss um die Shader zu benutzen? Oder irgendwelche Einstellungen?
THX |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 37 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
|
Nach oben |
|
 |
|