2013-02-08 2 views
0

J'utilise un tampon constant pour transférer des données à mes pixel shaderD3D10 tampon Constant ne fonctionne pas

Le problème est que le tampon contient 0 dans le shader lors de l'exécution de x, y, z, et w du float4 membre, indépendamment de ce que les données sont mises à jour dans la mémoire tampon

définitions de structure sont les suivantes:

// (C++) 
struct Buffer 
{ 
    XMMATRIX mvp_; 
    XMFLOAT4 rgba_; 
    int usemvp_; 
}; 


// HLSL 
cbuffer Buffer : register(b0) 
{ 
    matrix mvp_; 
    float4 rgba_; 
    int usemvp_; 
}; 

Toute aide est très appréciée

Répondre

2

Vous NE ne ed pour tamponner votre structure pour l'aligner sur 16 octets.

// (C++) 
struct Buffer 
{ 
    XMMATRIX mvp_; 
    XMFLOAT4 rgba_; 
    int usemvp_; 
    float padding[3]; 
}; 

vous devez également vous assurer que vous configurez la mémoire tampon constante dans la phase de shaders correcte, soit VSSetConstantBuffers vs PSSetConstantBuffers.

+0

Je n'ai jamais appelé PSSetConstantBuffers()! Merci pour l'aide – TheResolute

Questions connexes