Файл shader.hlsl вызывает ошибку? - PullRequest
0 голосов
/ 30 октября 2011

Я работаю над тем, чтобы заставить этот проект DirectX11 загрузить треугольник на экран, который использует файл shader.hlsl, чтобы раскрасить треугольник на основе позиций в треугольнике (это разноцветный треугольник, который смешивается вместе),На этот раз я не получаю нормальную ошибку вывода.Не уверен, как подойти / справиться с этим.

// функция, которая вызывает файл shaders.hlsl

void InitPipeline()

{

// load and compile the two shaders

ID3D10Blob *VS, *PS;
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);

// encapsulate both shaders into shader objects
dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);

// set the shader objects
devcon->VSSetShader(pVS, 0, 0);
devcon->PSSetShader(pPS, 0, 0);

// create the input layout object
D3D11_INPUT_ELEMENT_DESC ied[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

dev->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
devcon->IASetInputLayout(pLayout);

}

struct VOut { 
    float4 position : SV_POSITION; 
    float4 color : COLOR; 
}; 

VOut VShader(float4 position : POSITION, float4 color : COLOR) { 
    VOut output; 
    output.position = position; 
    output.color = color; 
    return output; 
} 

float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET {
    return color; 
} 

1 Ответ

1 голос
/ 30 ноября 2011

Вы используете Visual Studio?Щелкните правой кнопкой мыши shaders.hlsl , найдите полный путь и замените shaders.hlsl в функциях D3DX11CompileFromFile на абсолютный путь.Обязательно замените \ символов на \\ для правильного экранирования.

Visual Studio оставляет shaders.hlsl в том же месте, что и исходный код, что означаетПрограмма не может найти это.Синее окно все еще отображается?Это проблема, с которой я столкнулся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...