【DirectX11】【学习笔记(3)练习】修改三角形颜色

本节主要学习了如何通过利用输入布局,VS 和PS来给三角形上色。

Exercise 1:

画一个紫色三角形。

步骤:更改vertex数组中的颜色值就可以做到。

(紫色颜色值为0.5f,0.5f,0.5f)

Exercise 2:

向VS传入两个颜色,使得最终颜色值为两个颜色向量相乘。

首先更改顶点结构和输入布局。

struct Vertex
{
	Vertex() {}
	XMFLOAT3 pos;
	XMFLOAT4 color;
	XMFLOAT4 color2;
	Vertex( float x,float y,float z,float r,float g,float b,float a, float cr, float cg, float cb, float ca):pos(x, y, z),color(r,g,b,a),color2(cr,cg,cb,ca) {}
};
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},
	{ "COLOR",1,DXGI_FORMAT_R32G32B32A32_FLOAT,0,28,D3D11_INPUT_PER_VERTEX_DATA,0 },
};

第二个颜色的输入布局名字还是COLOR,但是后面的第二个参数为1,这一点在之前的章节提到过。对于同样属性,可以在后面第二个参数上加数字。

注意:对应的这个参数在VS中的名字就是第一个参数名字+第二个参数的数字

修改后的VS如下:

VS_OUTPUT VS(float4 inPos : POSITION, float4 color : COLOR,float4 color2 :COLOR1)
{
    VS_OUTPUT output;

    output.Pos = inPos;
   output.Color.r = color.r * color2.r; 
   output.Color.g = color.g * color2.g;
   output.Color.b = color.b * color2.b; 
   output.Color.a = color.a * color2.a; 

    return output;
}

其实这部分代码非常简单,但是由于fx文件中编写代码,没有报错信息,所以还是要很小心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值