иди проспись и еще раз прочитай. может так понятнее будет:Немного не понял, мне нужно находить Z тоже в моем worldtoscreen? Просто вот я нашел в ИДЕ эту часть, которая отвечает за матрицу, за позицию на скрине(NDC)
myscreen.y = _y * dif;
myscreen.x = _x;
Посмотреть вложение 194343
/////
struct Vertex
{
XMFLOAT3 pos;
XMFLOAT4 color;
Vertex() {}
Vertex(float x,float y, float z, float r, float g, float b, float a)
{
pos = { x,y,z };
color = {r,g,b,a};
}
};
///// vertices
Vertex myvertex[] =
{
////////////////////////////// Я знаю что там цвета от 0 до 1, я просто проверял и ничего не помогло всеравно
{(float)(HPbar.x-0.015),(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 },
{(float)HPbar.x + manastorage,(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 },
{(float)(HPbar.x-0.015),(float)(HPbar.y - 0.025),(float)HPbar.z,0 ,0 ,255 ,255 },
{(float)HPbar.x + manastorage,(float)((float)(HPbar.y - 0.025)),(float)HPbar.z,0 ,0 ,255 ,255 },
{(float)HPbar.x + manastorage,(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 },
{(float)(HPbar.x - 0.015),(float)((float)(HPbar.y - 0.025)),(float)HPbar.z,0 ,0 ,255 ,255 }
};
/// describe input element
D3D11_INPUT_ELEMENT_DESC ed[] =
{
{"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0},
{"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT,0,D3D11_APPEND_ALIGNED_ELEMENT,D3D11_INPUT_PER_VERTEX_DATA,0}
};
/// vertex shader
struct VS_INPUT
{
float3 inPos : POSITION;
float4 inColor : COLOR;
};
struct VS_OUTPUT
{
float4 outPosition : SV_POSITION;
float4 outColor : COLOR;
};
VS_OUTPUT mainVS(VS_INPUT input)
{
VS_OUTPUT output;
output.outPosition = float4(input.inPos,1.0f);
output.outColor = input.inColor;
return output;
}
/// pixel shader
struct PS_INPUT
{
float4 outPosition : POSITION;
float4 outColor : COLOR;
};
float4 mainPS(PS_INPUT input) : SV_TARGET
{
return float4(input.outColor);
}
вот мой шейдер для простых линий(точка1->точка2): (VS шейдер такой уебищный ибо я там просто для ясности расписал)Почему у меня не меняяется цвет? Вроде всё верно рассписал шейдеры и описал структуру вертекс, но цвет черный.
C++:///// struct Vertex { XMFLOAT3 pos; XMFLOAT4 color; Vertex() {} Vertex(float x,float y, float z, float r, float g, float b, float a) { pos = { x,y,z }; color = {r,g,b,a}; } }; ///// vertices Vertex myvertex[] = { ////////////////////////////// Я знаю что там цвета от 0 до 1, я просто проверял и ничего не помогло всеравно {(float)(HPbar.x-0.015),(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 }, {(float)HPbar.x + manastorage,(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 }, {(float)(HPbar.x-0.015),(float)(HPbar.y - 0.025),(float)HPbar.z,0 ,0 ,255 ,255 }, {(float)HPbar.x + manastorage,(float)((float)(HPbar.y - 0.025)),(float)HPbar.z,0 ,0 ,255 ,255 }, {(float)HPbar.x + manastorage,(float)HPbar.y,(float)HPbar.z,0 ,0 ,255 ,255 }, {(float)(HPbar.x - 0.015),(float)((float)(HPbar.y - 0.025)),(float)HPbar.z,0 ,0 ,255 ,255 } }; /// describe input element D3D11_INPUT_ELEMENT_DESC ed[] = { {"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0}, {"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT,0,D3D11_APPEND_ALIGNED_ELEMENT,D3D11_INPUT_PER_VERTEX_DATA,0} }; /// vertex shader struct VS_INPUT { float3 inPos : POSITION; float4 inColor : COLOR; }; struct VS_OUTPUT { float4 outPosition : SV_POSITION; float4 outColor : COLOR; }; VS_OUTPUT mainVS(VS_INPUT input) { VS_OUTPUT output; output.outPosition = float4(input.inPos,1.0f); output.outColor = input.inColor; return output; } /// pixel shader struct PS_INPUT { float4 outPosition : POSITION; float4 outColor : COLOR; }; float4 mainPS(PS_INPUT input) : SV_TARGET { return float4(input.outColor); }
export
std::string_view line_shader_string{
R"(
struct VS_OUTPUT
{
float4 pos : SV_POSITION;
float4 col : COLOR;
};
struct VS_INPUT
{
float4 pos : POSITION;
float4 col : COLOR;
};
VS_OUTPUT VS(VS_INPUT input)
{
VS_OUTPUT output;
output.pos = input.pos;
output.col = input.col;
return output;
}
float4 PS(VS_OUTPUT input) : SV_TARGET
{
return input.col;
}
)"
};
import <iostream>;
import <DirectXMath.h>;
import <directxpackedvector.h>;
using DWORD = unsigned long;
export
__declspec(align(16)) class DirectXColor
{
public:
float x{};
float y{};
float z{};
float w{};
operator DWORD() const
{
DirectX::PackedVector::XMCOLOR xm_out{};
DirectX::PackedVector::XMStoreColor(&xm_out, DirectX::FXMVECTOR{ x,y,z, w });
return (xm_out.a << 24 | xm_out.b << 16 | xm_out.g << 8 | xm_out.r);
}
constexpr DirectXColor() = default;
constexpr DirectXColor(float X, float Y, float Z, float W) noexcept
:
x{ X }, y{ Y }, z{ Z }, w{ W }
{}
operator const DirectX::XMVECTORF32() const noexcept
{
return *reinterpret_cast<const DirectX::XMVECTORF32*>(this);
}
operator DirectX::XMVECTORF32() noexcept
{
return *reinterpret_cast<DirectX::XMVECTORF32*>(this);
}
operator const DirectX::XMVECTORF32&() const noexcept
{
return *reinterpret_cast<const DirectX::XMVECTORF32*>(this);
}
operator DirectX::XMVECTORF32& () noexcept
{
return *reinterpret_cast<DirectX::XMVECTORF32*>(this);
}
};
export
std::ostream& operator<< (std::ostream& stream, const DirectXColor& vector) {
stream << " x: " << vector.x;
stream << " y: " << vector.y;
stream << " z: " << vector.z;
stream << " w: " << vector.w;
return stream;
}
export
namespace DxColors
{
constexpr DirectXColor AliceBlue{ 0.941176534f, 0.972549081f, 1.000000000f, 1.000000000f };
constexpr DirectXColor AntiqueWhite{ 0.980392218f, 0.921568692f, 0.843137324f, 1.000000000f };
constexpr DirectXColor Aqua{ 0.000000000f, 1.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Aquamarine{ 0.498039246f, 1.000000000f, 0.831372619f, 1.000000000f };
constexpr DirectXColor Azure{ 0.941176534f, 1.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Beige{ 0.960784376f, 0.960784376f, 0.862745166f, 1.000000000f };
constexpr DirectXColor Bisque{ 1.000000000f, 0.894117713f, 0.768627524f, 1.000000000f };
constexpr DirectXColor Black{ 0.000000000f, 0.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor BlanchedAlmond{ 1.000000000f, 0.921568692f, 0.803921640f, 1.000000000f };
constexpr DirectXColor Blue{ 0.000000000f, 0.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor BlueViolet{ 0.541176498f, 0.168627456f, 0.886274576f, 1.000000000f };
constexpr DirectXColor Brown{ 0.647058845f, 0.164705887f, 0.164705887f, 1.000000000f };
constexpr DirectXColor BurlyWood{ 0.870588303f, 0.721568644f, 0.529411793f, 1.000000000f };
constexpr DirectXColor CadetBlue{ 0.372549027f, 0.619607866f, 0.627451003f, 1.000000000f };
constexpr DirectXColor Chartreuse{ 0.498039246f, 1.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor Chocolate{ 0.823529482f, 0.411764741f, 0.117647067f, 1.000000000f };
constexpr DirectXColor Coral{ 1.000000000f, 0.498039246f, 0.313725501f, 1.000000000f };
constexpr DirectXColor CornflowerBlue{ 0.392156899f, 0.584313750f, 0.929411829f, 1.000000000f };
constexpr DirectXColor Cornsilk{ 1.000000000f, 0.972549081f, 0.862745166f, 1.000000000f };
constexpr DirectXColor Crimson{ 0.862745166f, 0.078431375f, 0.235294133f, 1.000000000f };
constexpr DirectXColor Cyan{ 0.000000000f, 1.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor DarkBlue{ 0.000000000f, 0.000000000f, 0.545098066f, 1.000000000f };
constexpr DirectXColor DarkCyan{ 0.000000000f, 0.545098066f, 0.545098066f, 1.000000000f };
constexpr DirectXColor DarkGoldenrod{ 0.721568644f, 0.525490224f, 0.043137256f, 1.000000000f };
constexpr DirectXColor DarkGray{ 0.662745118f, 0.662745118f, 0.662745118f, 1.000000000f };
constexpr DirectXColor DarkGreen{ 0.000000000f, 0.392156899f, 0.000000000f, 1.000000000f };
constexpr DirectXColor DarkKhaki{ 0.741176486f, 0.717647076f, 0.419607878f, 1.000000000f };
constexpr DirectXColor DarkMagenta{ 0.545098066f, 0.000000000f, 0.545098066f, 1.000000000f };
constexpr DirectXColor DarkOliveGreen{ 0.333333343f, 0.419607878f, 0.184313729f, 1.000000000f };
constexpr DirectXColor DarkOrange{ 1.000000000f, 0.549019635f, 0.000000000f, 1.000000000f };
constexpr DirectXColor DarkOrchid{ 0.600000024f, 0.196078449f, 0.800000072f, 1.000000000f };
constexpr DirectXColor DarkRed{ 0.545098066f, 0.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor DarkSalmon{ 0.913725555f, 0.588235319f, 0.478431404f, 1.000000000f };
constexpr DirectXColor DarkSeaGreen{ 0.560784340f, 0.737254918f, 0.545098066f, 1.000000000f };
constexpr DirectXColor DarkSlateBlue{ 0.282352954f, 0.239215702f, 0.545098066f, 1.000000000f };
constexpr DirectXColor DarkSlateGray{ 0.184313729f, 0.309803933f, 0.309803933f, 1.000000000f };
constexpr DirectXColor DarkTurquoise{ 0.000000000f, 0.807843208f, 0.819607913f, 1.000000000f };
constexpr DirectXColor DarkViolet{ 0.580392182f, 0.000000000f, 0.827451050f, 1.000000000f };
constexpr DirectXColor DeepPink{ 1.000000000f, 0.078431375f, 0.576470613f, 1.000000000f };
constexpr DirectXColor DeepSkyBlue{ 0.000000000f, 0.749019623f, 1.000000000f, 1.000000000f };
constexpr DirectXColor DimGray{ 0.411764741f, 0.411764741f, 0.411764741f, 1.000000000f };
constexpr DirectXColor DodgerBlue{ 0.117647067f, 0.564705908f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Firebrick{ 0.698039234f, 0.133333340f, 0.133333340f, 1.000000000f };
constexpr DirectXColor FloralWhite{ 1.000000000f, 0.980392218f, 0.941176534f, 1.000000000f };
constexpr DirectXColor ForestGreen{ 0.133333340f, 0.545098066f, 0.133333340f, 1.000000000f };
constexpr DirectXColor Fuchsia{ 1.000000000f, 0.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Gainsboro{ 0.862745166f, 0.862745166f, 0.862745166f, 1.000000000f };
constexpr DirectXColor GhostWhite{ 0.972549081f, 0.972549081f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Gold{ 1.000000000f, 0.843137324f, 0.000000000f, 1.000000000f };
constexpr DirectXColor Goldenrod{ 0.854902029f, 0.647058845f, 0.125490203f, 1.000000000f };
constexpr DirectXColor Gray{ 0.501960814f, 0.501960814f, 0.501960814f, 1.000000000f };
constexpr DirectXColor Green{ 0.000000000f, 0.501960814f, 0.000000000f, 1.000000000f };
constexpr DirectXColor GreenYellow{ 0.678431392f, 1.000000000f, 0.184313729f, 1.000000000f };
constexpr DirectXColor Honeydew{ 0.941176534f, 1.000000000f, 0.941176534f, 1.000000000f };
constexpr DirectXColor HotPink{ 1.000000000f, 0.411764741f, 0.705882370f, 1.000000000f };
constexpr DirectXColor IndianRed{ 0.803921640f, 0.360784322f, 0.360784322f, 1.000000000f };
constexpr DirectXColor Indigo{ 0.294117659f, 0.000000000f, 0.509803951f, 1.000000000f };
constexpr DirectXColor Ivory{ 1.000000000f, 1.000000000f, 0.941176534f, 1.000000000f };
constexpr DirectXColor Khaki{ 0.941176534f, 0.901960850f, 0.549019635f, 1.000000000f };
constexpr DirectXColor Lavender{ 0.901960850f, 0.901960850f, 0.980392218f, 1.000000000f };
constexpr DirectXColor LavenderBlush{ 1.000000000f, 0.941176534f, 0.960784376f, 1.000000000f };
constexpr DirectXColor LawnGreen{ 0.486274540f, 0.988235354f, 0.000000000f, 1.000000000f };
constexpr DirectXColor LemonChiffon{ 1.000000000f, 0.980392218f, 0.803921640f, 1.000000000f };
constexpr DirectXColor LightBlue{ 0.678431392f, 0.847058892f, 0.901960850f, 1.000000000f };
constexpr DirectXColor LightCoral{ 0.941176534f, 0.501960814f, 0.501960814f, 1.000000000f };
constexpr DirectXColor LightCyan{ 0.878431439f, 1.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor LightGoldenrodYellow{ 0.980392218f, 0.980392218f, 0.823529482f, 1.000000000f };
constexpr DirectXColor LightGreen{ 0.564705908f, 0.933333397f, 0.564705908f, 1.000000000f };
constexpr DirectXColor LightGray{ 0.827451050f, 0.827451050f, 0.827451050f, 1.000000000f };
constexpr DirectXColor LightPink{ 1.000000000f, 0.713725507f, 0.756862819f, 1.000000000f };
constexpr DirectXColor LightSalmon{ 1.000000000f, 0.627451003f, 0.478431404f, 1.000000000f };
constexpr DirectXColor LightSeaGreen{ 0.125490203f, 0.698039234f, 0.666666687f, 1.000000000f };
constexpr DirectXColor LightSkyBlue{ 0.529411793f, 0.807843208f, 0.980392218f, 1.000000000f };
constexpr DirectXColor LightSlateGray{ 0.466666698f, 0.533333361f, 0.600000024f, 1.000000000f };
constexpr DirectXColor LightSteelBlue{ 0.690196097f, 0.768627524f, 0.870588303f, 1.000000000f };
constexpr DirectXColor LightYellow{ 1.000000000f, 1.000000000f, 0.878431439f, 1.000000000f };
constexpr DirectXColor Lime{ 0.000000000f, 1.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor LimeGreen{ 0.196078449f, 0.803921640f, 0.196078449f, 1.000000000f };
constexpr DirectXColor Linen{ 0.980392218f, 0.941176534f, 0.901960850f, 1.000000000f };
constexpr DirectXColor Magenta{ 1.000000000f, 0.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor Maroon{ 0.501960814f, 0.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor MediumAquamarine{ 0.400000036f, 0.803921640f, 0.666666687f, 1.000000000f };
constexpr DirectXColor MediumBlue{ 0.000000000f, 0.000000000f, 0.803921640f, 1.000000000f };
constexpr DirectXColor MediumOrchid{ 0.729411781f, 0.333333343f, 0.827451050f, 1.000000000f };
constexpr DirectXColor MediumPurple{ 0.576470613f, 0.439215720f, 0.858823597f, 1.000000000f };
constexpr DirectXColor MediumSeaGreen{ 0.235294133f, 0.701960802f, 0.443137288f, 1.000000000f };
constexpr DirectXColor MediumSlateBlue{ 0.482352972f, 0.407843173f, 0.933333397f, 1.000000000f };
constexpr DirectXColor MediumSpringGreen{ 0.000000000f, 0.980392218f, 0.603921592f, 1.000000000f };
constexpr DirectXColor MediumTurquoise{ 0.282352954f, 0.819607913f, 0.800000072f, 1.000000000f };
constexpr DirectXColor MediumVioletRed{ 0.780392230f, 0.082352944f, 0.521568656f, 1.000000000f };
constexpr DirectXColor MidnightBlue{ 0.098039225f, 0.098039225f, 0.439215720f, 1.000000000f };
constexpr DirectXColor MintCream{ 0.960784376f, 1.000000000f, 0.980392218f, 1.000000000f };
constexpr DirectXColor MistyRose{ 1.000000000f, 0.894117713f, 0.882353008f, 1.000000000f };
constexpr DirectXColor Moccasin{ 1.000000000f, 0.894117713f, 0.709803939f, 1.000000000f };
constexpr DirectXColor NavajoWhite{ 1.000000000f, 0.870588303f, 0.678431392f, 1.000000000f };
constexpr DirectXColor Navy{ 0.000000000f, 0.000000000f, 0.501960814f, 1.000000000f };
constexpr DirectXColor OldLace{ 0.992156923f, 0.960784376f, 0.901960850f, 1.000000000f };
constexpr DirectXColor Olive{ 0.501960814f, 0.501960814f, 0.000000000f, 1.000000000f };
constexpr DirectXColor OliveDrab{ 0.419607878f, 0.556862772f, 0.137254909f, 1.000000000f };
constexpr DirectXColor Orange{ 1.000000000f, 0.647058845f, 0.000000000f, 1.000000000f };
constexpr DirectXColor OrangeRed{ 1.000000000f, 0.270588249f, 0.000000000f, 1.000000000f };
constexpr DirectXColor Orchid{ 0.854902029f, 0.439215720f, 0.839215755f, 1.000000000f };
constexpr DirectXColor PaleGoldenrod{ 0.933333397f, 0.909803987f, 0.666666687f, 1.000000000f };
constexpr DirectXColor PaleGreen{ 0.596078455f, 0.984313786f, 0.596078455f, 1.000000000f };
constexpr DirectXColor PaleTurquoise{ 0.686274529f, 0.933333397f, 0.933333397f, 1.000000000f };
constexpr DirectXColor PaleVioletRed{ 0.858823597f, 0.439215720f, 0.576470613f, 1.000000000f };
constexpr DirectXColor PapayaWhip{ 1.000000000f, 0.937254965f, 0.835294187f, 1.000000000f };
constexpr DirectXColor PeachPuff{ 1.000000000f, 0.854902029f, 0.725490212f, 1.000000000f };
constexpr DirectXColor Peru{ 0.803921640f, 0.521568656f, 0.247058839f, 1.000000000f };
constexpr DirectXColor Pink{ 1.000000000f, 0.752941251f, 0.796078503f, 1.000000000f };
constexpr DirectXColor Plum{ 0.866666734f, 0.627451003f, 0.866666734f, 1.000000000f };
constexpr DirectXColor PowderBlue{ 0.690196097f, 0.878431439f, 0.901960850f, 1.000000000f };
constexpr DirectXColor Purple{ 0.501960814f, 0.000000000f, 0.501960814f, 1.000000000f };
constexpr DirectXColor Red{ 1.000000000f, 0.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor RosyBrown{ 0.737254918f, 0.560784340f, 0.560784340f, 1.000000000f };
constexpr DirectXColor RoyalBlue{ 0.254901975f, 0.411764741f, 0.882353008f, 1.000000000f };
constexpr DirectXColor SaddleBrown{ 0.545098066f, 0.270588249f, 0.074509807f, 1.000000000f };
constexpr DirectXColor Salmon{ 0.980392218f, 0.501960814f, 0.447058856f, 1.000000000f };
constexpr DirectXColor SandyBrown{ 0.956862807f, 0.643137276f, 0.376470625f, 1.000000000f };
constexpr DirectXColor SeaGreen{ 0.180392161f, 0.545098066f, 0.341176480f, 1.000000000f };
constexpr DirectXColor SeaShell{ 1.000000000f, 0.960784376f, 0.933333397f, 1.000000000f };
constexpr DirectXColor Sienna{ 0.627451003f, 0.321568638f, 0.176470593f, 1.000000000f };
constexpr DirectXColor Silver{ 0.752941251f, 0.752941251f, 0.752941251f, 1.000000000f };
constexpr DirectXColor SkyBlue{ 0.529411793f, 0.807843208f, 0.921568692f, 1.000000000f };
constexpr DirectXColor SlateBlue{ 0.415686309f, 0.352941185f, 0.803921640f, 1.000000000f };
constexpr DirectXColor SlateGray{ 0.439215720f, 0.501960814f, 0.564705908f, 1.000000000f };
constexpr DirectXColor Snow{ 1.000000000f, 0.980392218f, 0.980392218f, 1.000000000f };
constexpr DirectXColor SpringGreen{ 0.000000000f, 1.000000000f, 0.498039246f, 1.000000000f };
constexpr DirectXColor SteelBlue{ 0.274509817f, 0.509803951f, 0.705882370f, 1.000000000f };
constexpr DirectXColor Tan{ 0.823529482f, 0.705882370f, 0.549019635f, 1.000000000f };
constexpr DirectXColor Teal{ 0.000000000f, 0.501960814f, 0.501960814f, 1.000000000f };
constexpr DirectXColor Thistle{ 0.847058892f, 0.749019623f, 0.847058892f, 1.000000000f };
constexpr DirectXColor Tomato{ 1.000000000f, 0.388235331f, 0.278431386f, 1.000000000f };
constexpr DirectXColor Transparent{ 0.000000000f, 0.000000000f, 0.000000000f, 0.000000000f };
constexpr DirectXColor Turquoise{ 0.250980407f, 0.878431439f, 0.815686345f, 1.000000000f };
constexpr DirectXColor Violet{ 0.933333397f, 0.509803951f, 0.933333397f, 1.000000000f };
constexpr DirectXColor Wheat{ 0.960784376f, 0.870588303f, 0.701960802f, 1.000000000f };
constexpr DirectXColor White{ 1.000000000f, 1.000000000f, 1.000000000f, 1.000000000f };
constexpr DirectXColor WhiteSmoke{ 0.960784376f, 0.960784376f, 0.960784376f, 1.000000000f };
constexpr DirectXColor Yellow{ 1.000000000f, 1.000000000f, 0.000000000f, 1.000000000f };
constexpr DirectXColor YellowGreen{ 0.603921592f, 0.803921640f, 0.196078449f, 1.000000000f };
}
constexpr 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, 16 , D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
using Color = DirectXColor;
struct Vertex
{
Vertex() = default;
Vertex(float x, float y, float z, float w, Color col)
: pos{ x, y, z, w }, col{ col }
{}
DirectX::XMVECTOR pos{};
Color col{};
};
Vertex{
from.x,
from.y,
0.0f,
1.0f,
color
}
drawlist.AddBox(min, max, DxColors::Red);
/// vertex
struct VS_OUTPUT
{
float4 pos : SV_POSITION;
XMFLOAT4 col : COLOR;
};
struct VS_INPUT
{
XMFLOAT4 pos : POSITION;
XMFLOAT4 color :COLOR;
};
VS_OUTPUT mainVS(VS_INPUT input)
{
VS_OUTPUT output;
output.pos = float4(input.pos.x, input.pos.y, input.pos.z, input.pos.w);
output.col = input.color;
return output;
}
/////pixel shader
struct XMFLOAT4 // COLOR
{
float x, y, z, w : COLOR;
};
struct VS_OUTPUT
{
float4 pos : SV_POSITION;
XMFLOAT4 col : COLOR;
};
struct VS_INPUT
{
float4 pos : SV_POSITION;
XMFLOAT4 col : COLOR;
};
float4 mainPS(VS_INPUT input) : SV_TARGET
{
return float4(input.col.x,input.col.y,input.col.z,input.col.w);
}
/// vertex class
struct Vertex
{
Vertex(float x, float y, float z, float w, float r, float g, float b, float a) : pos{ x,y,z,w }, color{ r,g,b,a} {}
Vertex(float x, float y, float z, float w, XMFLOAT4 _color) : pos{ x,y,z,w }, color{ _color.x,_color.y,_color.z,_color.w } {}
XMFLOAT4 pos;
XMFLOAT4 color;
};
///
XMFLOAT4 black = { 0.0f,0.0f,0.0f,1.0f };
Vertex myvertex[] =
{
{HPbar.x,HPbar.y,HPbar.z,1.0f,black},
{HPbar.x + 0.3f,HPbar.y,HPbar.z,1.0f,black},
{HPbar.x + 0.15f,HPbar.y+0.3f,HPbar.z,1.0f,black}
};
бро. юзай функции. не надо руками ничего делать. убери все свое говно, сделай нормальный в2с, сделай нормальный DrawRect, и сиди кайфуй DrawRect(start, end, Black); DrawRect(start, end_blablabla, Blue);Окей, я пофиксил изменения цвета. проблема была в шейдерах.Можете подсказать пожалуйста как лучше сделать.
Рисовать в одной функе всё ( типа использовать 1 массив для 6 вертиксов(Цветом Синий) и для 6 вертиксов( Цветом Черный-ФОН) .
И типа чтобы сначало нарисовался черная полоска, а потом на тех же координатах нарисовалась синяя полоскаПосмотреть вложение 194410
D3D11_INPUT_ELEMENT_DESC ed[] =
{
//L"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0
{"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0},
{"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT,0,D3D11_APPEND_ALIGNED_ELEMENT,D3D11_INPUT_PER_VERTEX_DATA,0}
};
XMFLOAT4 blue = { 0.0f,0.0f,1.0f,1.0f };
Vertex myvertex[] =
{
{(float)(HPbar.x - 0.015f),(float)HPbar.y,HPbar.z,blue},
{(float)(HPbar.x + manastorage),(float)HPbar.y,HPbar.z, blue },
{(float)(HPbar.x - 0.015f),(float)(HPbar.y - 0.025f),HPbar.z,blue },
{(float)(HPbar.x + manastorage),(float)((float)(HPbar.y - 0.025f)),HPbar.z,blue},
{(float)(HPbar.x + manastorage),(float)HPbar.y,HPbar.z,blue },
{(float)(HPbar.x - 0.015f),(float)((float)(HPbar.y - 0.025f)),HPbar.z,blue}
};
struct Vertex
{
//Vertex(float x, float y,float z,float w, float r, float g, float b, float a) : pos{ x,y,z,w }, color{ r,g,b,a} {}
Vertex(float _x, float _y, float _z,XMFLOAT4 _color)
{
ndc.x = _x;
ndc.y = _y;
ndc.z = _z;
color = { _color.x,_color.y,_color.z,_color.w };
}
XMFLOAT3 ndc;
XMFLOAT4 color;
};
struct VS_OUTPUT
{
float4 coord : SV_POSITION;
float4 color : COLOR;
};
float4 mainPS(VS_OUTPUT input) : SV_TARGET
{
return input.color;
}
struct VS_INPUT
{
float3 coords : POSITION;
float4 color : COLOR;
};
struct VS_OUTPUT
{
float4 coord : SV_POSITION;
float4 color : COLOR;
};
VS_OUTPUT mainVS(VS_INPUT input)
{
VS_OUTPUT output;
output.coord = float4(input.coords,1.0f);
output.color = input.color;
return output;
}
ну начнем с тго что у ndc нет z(это вектор2). а во-вторых оставь float4 в шейдере и в вертексе как было и не парься(потом поменяешь когда уже со всем разберешься). Vertex{ndc.x, ndc.y, 0.0f, 1.0f, color}.Вообще нихрена не понял, как работает передача значений из буффера в шейдеры. Кароч я чето сделал и уменя все слетело блять, и вернуть не могу.из того что я знаю Vertexshader принимает 3 координаты на экране (x,y,z)(тип х=-0.4, у=0.5,z=0 a w = 1).
возвращает обычно float4 SV_POSITION. но так как у меня с цветом то я создаю структуру
VS_IN,VS_OUT( PS_IN )
Пиксель принимает результат(VS_OUT) который в себе содержит FLOAT4 коорды и FLOAT4цвет и возвращает цвет в СВ_ТАРГЕТС.
C++:D3D11_INPUT_ELEMENT_DESC ed[] = { //L"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 {"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0}, {"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT,0,D3D11_APPEND_ALIGNED_ELEMENT,D3D11_INPUT_PER_VERTEX_DATA,0} }; XMFLOAT4 blue = { 0.0f,0.0f,1.0f,1.0f }; Vertex myvertex[] = { {(float)(HPbar.x - 0.015f),(float)HPbar.y,HPbar.z,blue}, {(float)(HPbar.x + manastorage),(float)HPbar.y,HPbar.z, blue }, {(float)(HPbar.x - 0.015f),(float)(HPbar.y - 0.025f),HPbar.z,blue }, {(float)(HPbar.x + manastorage),(float)((float)(HPbar.y - 0.025f)),HPbar.z,blue}, {(float)(HPbar.x + manastorage),(float)HPbar.y,HPbar.z,blue }, {(float)(HPbar.x - 0.015f),(float)((float)(HPbar.y - 0.025f)),HPbar.z,blue} }; struct Vertex { //Vertex(float x, float y,float z,float w, float r, float g, float b, float a) : pos{ x,y,z,w }, color{ r,g,b,a} {} Vertex(float _x, float _y, float _z,XMFLOAT4 _color) { ndc.x = _x; ndc.y = _y; ndc.z = _z; color = { _color.x,_color.y,_color.z,_color.w }; } XMFLOAT3 ndc; XMFLOAT4 color; }; struct VS_OUTPUT { float4 coord : SV_POSITION; float4 color : COLOR; }; float4 mainPS(VS_OUTPUT input) : SV_TARGET { return input.color; } struct VS_INPUT { float3 coords : POSITION; float4 color : COLOR; }; struct VS_OUTPUT { float4 coord : SV_POSITION; float4 color : COLOR; }; VS_OUTPUT mainVS(VS_INPUT input) { VS_OUTPUT output; output.coord = float4(input.coords,1.0f); output.color = input.color; return output; }
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz