在线教程几乎告诉我们使用<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
或color
渲染对象,但没有人告诉我们是否需要一个对象渲染颜色和另一个渲染纹理。如下代码
texture
或
struct VertexIn
{
float4 Pos : POSITION;
float4 Color : COLOR;
};
struct VertexOut
{
float4 Pos : SV_POSITION;
float4 Color : COLOR;
};
那么如何设置struct或struct VS_INPUT
{
float4 Pos : POSITION;
float2 Tex : TEXCOORD0;
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
和VS
函数来渲染一个带有颜色的对象,另一个带有纹理?还有什么,我的项目是用windows10 sdk。
答案 0 :(得分:1)
最好的方法是使用“Instance Buffers”。它们沿侧面顶点和索引缓冲区工作。每个对象不仅可以传递矩阵,还可以传递其他数据,例如浮点数,您可以使用这些数据来检查对象是应该使用颜色还是纹理。您需要将标志传递到像素着色器,以及颜色和纹理坐标。该标志可以像附加到实例的附加浮点一样简单。
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 colour : COLOR;
float4 flags : POSITION1;
};
我现在使用了position1,我记不起格式,但你应该使用int而不是float并将其设置为[nointerpolation],查找文档。
在您的像素着色器中,您可以执行以下操作。
colourout.rgb = texturesample.rgb * flags.x + colour.rgb * (1 - flags.x);
然后,只需将顶点缓冲区中的flags.x设置为0或1或2的组合。