XNA 4 VertexPositionTexture triangleStrip偶尔会消失

时间:2013-04-16 22:28:54

标签: xna-4.0 vertex-buffer

我正在使用VertexPositionTexture和BasicEffect绘制一个traingleStrip,它从屏幕的第一人称视角延伸到Z轴上的一定距离。 在循环中,我将开始和结束向量传递给此代码以创建我的顶点。

    public VertexPositionTexture[] vertices = new VertexPositionTexture[4];
    private int xPos = 4;

    public waypointLineSegment(Vector3 startPoint, Vector3 endPoint)
    {
        this.texture = texture1;
        vertices[0].Position = new Vector3(endPoint.X - xPos, endPoint.Y, endPoint.Z); //Upper Left Point
        vertices[0].TextureCoordinate = new Vector2(0, 1);
        vertices[1].Position = new Vector3(startPoint.X - xPos, endPoint.Y, startPoint.Z); //Lower Left point
        vertices[1].TextureCoordinate = new Vector2(0, 0);
        vertices[2].Position = new Vector3(endPoint.X + xPos, endPoint.Y, endPoint.Z); //Upper Right Point
        vertices[2].TextureCoordinate = new Vector2(1, 1);
        vertices[3].Position = new Vector3(startPoint.X + xPos, endPoint.Y, startPoint.Z); //Lower Right Point
        vertices[3].TextureCoordinate = new Vector2(1, 0);
    }

我这样初始化:

protected override void Initialize()
{
    graphics.GraphicsDevice.RasterizerState = RasterizerState.CullNone;
    basicEffect = new BasicEffect(graphics.GraphicsDevice);
    base.Initialize();
}

我以这种方式渲染飞机:

Vector3 transformedReference = Vector3.Transform(new Vector3(0, 0, 10), aRotationInt);
Vector3 cameraLookat = firstPersonVector + transformedReference;
view = Matrix.CreateLookAt(firstPersonVector, cameraLookat, Vector3.Up);

basicEffect.View = view;
foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes)
{
     pass.Apply();
     graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, allVertices, 0, 2);
}

这很有效。但是,当我对视图应用旋转时,条带会偶尔消失。然后它将再次出现,或多或少的旋转应用。

我找不到模式。它可能发生在37度或315等。我已将GraphicsDevice RasterizerState设置为CullMode.None。任何人都可以帮忙吗?:

0 个答案:

没有答案