Я использую постоянный буфер для передачи данных в мой пиксельный шейдер
Проблема в том, что буфер содержит 0 в шейдере во время выполнения для x, y, z и w члена float4, независимо от того, какие данные обновляются в буфере
Определения структуры следующие:
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
};// HLSL
cbuffer Buffer : register( b0 )
{
matrix mvp_;
float4 rgba_;
int usemvp_;
};
Любая помощь высоко ценится
Вы должны дополнить свою структуру, чтобы выровнять ее на 16 байт.
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
float padding[3];
};
Также вы должны убедиться, что вы устанавливаете постоянный буфер в правильную стадию шейдера, то есть VSSetConstantBuffers против PSSetConstantBuffers.
Других решений пока нет …