JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit Shader und HLSL

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 09.04.2005, 15:53    Titel: Problem mit Shader und HLSL Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.04.2005, 16:25    Titel: Antworten mit Zitat

Zitat:
float4 roteFarbe = { 1.0, 1.0, 1.0, 0.0 };


Very Happy

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 Wink
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 16:41    Titel: Antworten mit Zitat

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. Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.04.2005, 18:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 35
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 19:51    Titel: Antworten mit Zitat

Schau dir einfach Fallens Tutorial dazu an Wink
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 10.04.2005, 00:29    Titel: Antworten mit Zitat

Wie du sehen kannst verwende ich garkeine Textur?
Fallen's Tutorial gefällt mir leider nicht sehr...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.04.2005, 13:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 10.04.2005, 13:49    Titel: Antworten mit Zitat

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. Sad
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
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.04.2005, 18:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 15.04.2005, 22:55    Titel: Antworten mit Zitat

Also einen Fehler habe ich schon gefunden, ich habe nämlich das m_pEffect->End(); vergessen Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 15.04.2005, 23:02    Titel: Antworten mit Zitat

Tipp, damit sowas nicht noch mal passiert:

::std::stack<T> Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 16.04.2005, 00:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 16.04.2005, 13:23    Titel: Antworten mit Zitat

Ich habe das ganze mal hochgeladen, wäre nett wenn ihr es euch anschauen würdet Smile!
http://www.bengine.net/Shader.zip
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum