Autor Wątek: Wysyłanie do pliku fx. 2 kolory  (Przeczytany 832 razy)

Offline kolarz3

  • Użytkownik

# Grudzień 09, 2012, 12:55:39
Witam, czemu gdy próbuje wysłać do PS i VS 2 kolory to trójkąt nie chce się narysować. Gdy wykomentuje ten drugi parametr"COLOR2" to wszystko jest w porządku
D3D11_INPUT_ELEMENT_DESC layout[] =
{
{ "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 },
{ "COLOR2", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 28, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
plik.fx
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR;
};
VS_OUTPUT VS(float4 inPos : POSITION, float4 inColor : COLOR)
{
    VS_OUTPUT output;

    output.Pos = inPos;
    output.Color = inColor;
    return output;
}
float4 PS(VS_OUTPUT input) : SV_TARGET
{
    return input.Color;
Struktura Vertexów
struct Vertex
{
    XMFLOAT3 Pos;
    XMFLOAT4 Col;
    XMFLOAT4 Col2;
};

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Mike148

  • Użytkownik

# Grudzień 09, 2012, 13:35:52
Powinieneś poczytać trochę o semantykach.

struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR;
};
VS_OUTPUT VS(float4 inPos : POSITION, float4 inColor : COLOR, float4 inClolor2 : COLOR2)
{
    VS_OUTPUT output;

    output.Pos = inPos;
    output.Color = inColor;
    return output;
}
float4 PS(VS_OUTPUT input) : SV_TARGET
{
    return input.Color;

Offline kolarz3

  • Użytkownik

# Grudzień 09, 2012, 14:27:50
up. To nic nie daje, parametr musi się nazywać COLORTWO, sam znalazłem rozwiązanie.

Offline Mike148

  • Użytkownik

# Grudzień 09, 2012, 20:23:28
Ale i tak musisz osobno odbierać drugi kolor. Tylko trzeba było inaczej semantykę nazwać :P

Offline kolarz3

  • Użytkownik

# Grudzień 10, 2012, 00:50:57
Troche dziwne że COLORTWO działa a COLOR2 nie.