Seite 1 von 1

[Dx11] Constant Buffer

Verfasst: 19.05.2012, 12:18
von MadMax
Hallo zusammen,

ich habe folgende Frage:

kann es sein das constanten buffer in Dx11 nur eine bestimmte größe haben dürfen (z.B. durch 16teilbar)?

Code: Alles auswählen

cbuffer MatrixBuffer : register( b0 )
{
    matrix World;
	matrix View;
	matrix Proj;
	float3 Sun;
};
dieser cb macht Probleme. D.h ich bekomme nur ein weißes Bild.

Code: Alles auswählen

cbuffer MatrixBuffer : register( b0 )
{
    matrix World;
	matrix View;
	matrix Proj;
	float4 Sun;
};
funktioniert problemlos.

Re: [Dx11] Constant Buffer

Verfasst: 19.05.2012, 12:19
von MadMax
btw wenn ich den float3 in einen eigenen Buffer auslagere funktioniert auch alles.

Re: [Dx11] Constant Buffer

Verfasst: 19.05.2012, 12:34
von dot
msdn hat geschrieben:If the bind flag is D3D11_BIND_CONSTANT_BUFFER, you must set the ByteWidth value in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.
;)

Und das solltest du dir vielleicht auch mal anschauen: http://msdn.microsoft.com/en-us/library ... 09632.aspx

Re: [Dx11] Constant Buffer

Verfasst: 19.05.2012, 12:36
von eXile
Genau wie dot sagte, und als Ergänzung würde ich hier noch die Packetierungsregeln für Constant Buffers einstreuen. Füg' mal ein paar #pragma pack 4 bzw. __declspec(align(16)) ein.

Re: [Dx11] Constant Buffer

Verfasst: 19.05.2012, 13:26
von MadMax
Vielen Dank für die schnellen Antworten