[DX10] ID3D10Effect Variablen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

[DX10] ID3D10Effect Variablen

Beitrag von Zudomon »

Hallo!
Ich scheitere Momentan an der Übergabe von Variablen aus meiner Applikation in den Effekt.
Habe da unter anderem folgende Variablen:

Code: Alles auswählen

   int Light_Cluster_List_Start[1024];
   int Light_Cluster_List_End[1024];
   matrix xSpriteProject[1024];
   float4 xSpriteColor[1024];
Und binde die dann in meiner App über folgenden Code:

Code: Alles auswählen

 
   g_Light_Cluster_List_Start_Variable:=mEffect.GetVariableByName('Light_Cluster_List_Start').AsScalar;
   g_Light_Cluster_List_End_Variable:=mEffect.GetVariableByName('Light_Cluster_List_End').AsScalar;

   g_2SpriteProjectVariable := mEffect.GetVariableByName('xSpriteProject').AsMatrix;
   g_2SpriteColorVariable := mEffect.GetVariableByName('xSpriteColor').AsVector;
Und letztlich übergebe ich noch die Daten:

Code: Alles auswählen

   g_2SpriteProjectVariable.SetMatrixArray(@SprPro[0], 0, Length(SprPro));
   g_2SpriteColorVariable.SetFloatVectorArray(@SprCol[0], 0, Length(SprCol));

   g_Light_Cluster_List_Start_Variable.SetIntArray(@LStart[0], 0, LightCluster.SCE_count);
   g_Light_Cluster_List_End_Variable.SetIntArray(@LEnd[0], 0, LightCluster.SCE_count);
Laut Debugging stehen bei der übergabe die Daten richtig drin, sollten also auch richtig übergeben werden. Allerdings werden nur der Float4 Vector und die Matrix korrekt übergeben. In den anderen beiden steht müll drin. Mache ich in der Deklarierung was falsch? Sind das vielleicht keine Scalare? Ich finde da so gut wie keine Informationen!

Gruß
Zudo
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [DX10] ID3D10Effect Variablen

Beitrag von Zudomon »

Diese Übergabe der int-Variablen funktioniert nur, wenn diese beiden Variablen innerhalb eines cbuffer deklariert wurden, aber bei einem tbuffer funktioniert es nicht. Seltsam ist auch, das es bei anderen int-Variablen funktioniert.
Kann mir jemand sagen, wie ich tbuffer richtig verwende bzw. wo ich darüber Informationen bekomme?
Antworten