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


Log in to reply