Multi-Stream Multi-Index Rendering
-
Ich will Multi-Stream Multi-Index Rendering machen wie hier beschrieben: http://msdn.microsoft.com/en-us/library/ee416419(VS.85).aspx
nur anstatt von D3D10 will ich D3D11 verwenden - außerdem arbeite ich ohne das Effect Framework nur mit HLSL, daher gibt es bei mir nicht so etwas wie Effektvariablen
Ich farge mich jetzt wie ich an einem Buffer<float4> g_Data; jetzt meine Daten binden kann - wie funktioniert das ohne Effektframework?
-
Naja, indem du mit dem entsprechenden *SetShaderResources() call deinen Buffer an den richtigen Slot bindest...
-
welches Register muss dann mein Buffer haben?
Buffer<float4> g_posBuffer : register( ??? );
-
Verwend D3DReflect um an die entsprechenden Infos zu kommen
-
es müsste so gehen:
Buffer<float4> g_posBuffer : register( c0 );
-
Wie kommst du da drauf, register(c0) bedeutet dass es auf den ersten float4 im Constant Buffer mappen soll, ich seh da weder etwas was man in einen cbuffer stecken könnte noch einen cbuffer!?
-
ja du hast recht - mist! wie geht es dann?
-
Sagte ich ja schon, Shader Reflection verwenden und den Slot der Variable raussuchen^^
-
ID3D11ShaderReflectionVariable::GetInterfaceSlot liefert mir nur Unsinn
ich habs auch über GetResourceBindingDesc versucht
for ( UINT i = 0; i < desc.BoundResources; i++ ) { D3D11_SHADER_INPUT_BIND_DESC bdesc; pReflector->GetResourceBindingDesc(0, &bdesc);
Da kommt meine Variable komischerweise zweimal daher - ich frage mich aber wo ich da den Slot herauslesen soll - hier die D3D11_SHADER_INPUT_BIND_DESC Struktur - ist der Slot gleich dem BindPoint? mmh
typedef struct _D3D11_SHADER_INPUT_BIND_DESC { LPCSTR Name; // Name of the resource D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.) UINT BindPoint; // Starting bind point UINT BindCount; // Number of contiguous bind points (for arrays) UINT uFlags; // Input binding flags D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture) D3D_SRV_DIMENSION Dimension; // Dimension (if texture) UINT NumSamples; // Number of samples (0 if not MS texture) } D3D11_SHADER_INPUT_BIND_DESC;
-
Vertexwahn schrieb:
ID3D11ShaderReflectionVariable::GetInterfaceSlot liefert mir nur Unsinn
Klar, das ist ja auch für Interfaces (dynamic shader linkage) gedacht
Vertexwahn schrieb:
Da kommt meine Variable komischerweise zweimal daher - ich frage mich aber wo ich da den Slot herauslesen soll - hier die D3D11_SHADER_INPUT_BIND_DESC Struktur - ist der Slot gleich dem BindPoint? mmh
Ich würd den BindPoint nehmen...
-
ah okay so funktioniert es jetzt