Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

bepo

Frischling

  • »bepo« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Bayern

Beruf: Schüler

  • Private Nachricht senden

1

26.08.2008, 13:04

D3D10 Inputlayout

Ich habe keine Ahnung, wieso dass nicht funktioniert. Der Effekt wurde erfolgreich geladen, ich kann Effektvariablen erfolgreich wieder auslesen. CreateInputLayout gibt E_INVALIDARG zurück.

passDesc enthält als Name einen leeren String und gibt als Größe der Inputsignatur irgendwas größer 5000000 an. Kann das stimmen?

Zitat

D3D10: ERROR: ID3D10Device::CreateInputLayout: Encoded Signature size doesn't match specified size.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
D3D10_PASS_DESC passDesc;
p_effect->GetTechniqueByName("t0")->GetPassByName("p0")->GetDesc(&passDesc);

D3D10_INPUT_ELEMENT_DESC inputLayout[] =
{
    { "POSITION",  0, DXGI_FORMAT_R32G32B32_FLOAT, 0,  0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
    { "NORMAL",    0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 }
};

HRESULT d = p_device->CreateInputLayout(inputLayout, 2, passDesc.pIAInputSignature, passDesc.IAInputSignatureSize, &p_inputLayout);


C-/C++-Quelltext

1
2
3
4
5
struct VS_INPUT
{
    float3 position     : POSITION;
    float3 normal       : NORMAL;
};

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.08.2008, 14:35

Zeig mal die Signatur von deinem Vertex Shader. Bekommt der nur ein VS_INPUT als Parameter oder vielleicht auch noch was andres!?

bepo

Frischling

  • »bepo« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Bayern

Beruf: Schüler

  • Private Nachricht senden

3

26.08.2008, 14:56

Ich habe jetzt alles so weit wie möglich reduziert, der Fehler bleibt aber der selbe.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
struct VS_INPUT
{
    float3 position : POSITION;
};

struct PS_INPUT
{
    float4 position : SV_Position;
};

PS_INPUT vertexMain(VS_INPUT input)
{
    PS_INPUT output;
    
    output.position = float4(input.position, 1);
    
    return(output);
}

float4 pixelMain(PS_INPUT input) : SV_Target
{
    return(input.position);
}

technique t0
{
    pass p0
    {
        SetVertexShader(CompileShader(vs_4_0, vertexMain()));
        SetGeometryShader(NULL);
        SetPixelShader(CompileShader(ps_4_0, pixelMain()));
    }
}



EDIT:

Quellcode

1
technique10

Das wars. Trotzdem Danke.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

4

26.08.2008, 15:15

hie müsste korrekterweise noch der normalvektor rein.

C-/C++-Quelltext

1
2
3
4
5
struct VS_INPUT
{
   float3 position : POSITION;
   float3 normal : NORMAL;
};

ansonsten probier mal anstelle von getbyname(...) das ganze mit getperindex(...).

Werbeanzeige