Xna DrawUserPrimitives<;顶点纹理>;抱怨顶点着色器缺少Color0
首先,我对XNA和GPU的工作方式以及它如何与XNA(或DirectX)API合作都是陌生的 我用SpriteBatch绘制了一个多边形。我正在对多边形进行三角剖分,并创建一个Xna DrawUserPrimitives<;顶点纹理>;抱怨顶点着色器缺少Color0,xna,drawing,vertex-shader,Xna,Drawing,Vertex Shader,首先,我对XNA和GPU的工作方式以及它如何与XNA(或DirectX)API合作都是陌生的 我用SpriteBatch绘制了一个多边形。我正在对多边形进行三角剖分,并创建一个VertexositionTexture数组来保存顶点。我设置了顶点(为了简单起见,将纹理偏移向量设置为零),并尝试绘制基本体,但出现以下错误: 当前顶点声明不包括当前顶点着色器所需的所有元素。缺少颜色0。 这是我的代码,我仔细检查了三角测量中的向量,它们很好: VertexPositionTexture[
VertexositionTexture
数组来保存顶点。我设置了顶点(为了简单起见,将纹理偏移向量设置为零),并尝试绘制基本体,但出现以下错误:
当前顶点声明不包括当前顶点着色器所需的所有元素。缺少颜色0。
这是我的代码,我仔细检查了三角测量中的向量,它们很好:
VertexPositionTexture[] vertices = new VertexPositionTexture[triangulationResult.Count * 3];
int ctr = 0;
foreach (var item in triangulationResult)
{
foreach (var point in item.Vertices)
{
vertices[ctr++] = new VertexPositionTexture(new Vector3(point.X, point.Y, 0), Vector2.Zero);
}
}
sb.GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleList, vertices, 0, triangulationResult.Count);
VertexositionTexture[]顶点=新的VertexositionTexture[triangulationResult.Count*3];
int ctr=0;
foreach(三角剖分结果中的变量项)
{
foreach(item.Vertices中的变量点)
{
顶点[ctr++]=新的VertexPositionTexture(新矢量3(点X,点Y,0),矢量2.0);
}
}
sb.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList,顶点,0,triangulationResult.Count);
我可能做错了什么?您的着色器希望顶点流中有颜色。。。。因此,您必须使用VertexPositionColorTexture或更改着色器 看起来您没有使用任何着色器。如果活动着色器与spritebatch一起使用,则无法正确绘制
VertexPositionColorTexture[] vertices = new VertexPositionColorTexture[triangulationResult.Count * 3];
int ctr = 0;
foreach (var item in triangulationResult)
{
foreach (var point in item.Vertices)
{
vertices[ctr++] = new VertexPositionColorTexture(new Vector3(point.X, point.Y, 0), Color.White, Vector2.Zero);
}
}
sb.GraphicsDevice.DrawUserPrimitives<VertexPositionColorTexture>(PrimitiveType.TriangleList, vertices, 0, triangulationResult.Count);
VertexositionColorTexture[]顶点=新的VertexositionColorTexture[triangulationResult.Count*3];
int ctr=0;
foreach(三角剖分结果中的变量项)
{
foreach(item.Vertices中的变量点)
{
顶点[ctr++]=新的VertexPositionColorTexture(新矢量3(点X,点Y,0),颜色.White,矢量2.0);
}
}
sb.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList,顶点,0,triangulationResult.Count);
如果要绘制多边形(),请使用basicefect
。对于精灵绘制,只能使用SpriteBatch
(即:使用其Draw
方法)
basicefect
所需的顶点元素类型将取决于应用于它的设置
要使用不带颜色组件的顶点元素类型(如VertexositionTexture
),请将BasicEffect.VertexColorEnabled
设置为false
或者,也可以使用提供颜色的顶点元素类型,例如VertexositionColorTexture
如果要创建与SpriteBatch具有相同坐标系的基本效果,请参阅或