1

我正在使用 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。谁能帮忙?:

4

0 回答 0