Quantcast
Channel: Community | MonoGame - Latest topics
Viewing all articles
Browse latest Browse all 6821

[SOLVED] BasicEffect error with vertices passed

$
0
0

@Conji wrote:

Me again.
Basically, the error is exactly what's passed. When I call pass.Apply(), I get an error saying the vertices supplied don't match the required input.
The creation of the effect:

            SkyPlaneEffect = new BasicEffect(Game.GraphicsDevice)
            {
                VertexColorEnabled = false,
                FogEnabled = true,
                FogStart = 0,
                FogEnd = 64 * 0.8f,
                LightingEnabled = true,
            };
```   
The vertices added:  
```
            var plane = new[]
            {
                new VertexPositionColor(new Vector3(-64, 0, -64), Color.White),
                new VertexPositionColor(new Vector3(64, 0, -64), Color.White),
                new VertexPositionColor(new Vector3(-64, 0, 64), Color.White),

                new VertexPositionColor(new Vector3(64, 0, -64), Color.White),
                new VertexPositionColor(new Vector3(64, 0, 64), Color.White),
                new VertexPositionColor(new Vector3(-64, 0, 64), Color.White)
            };
            SkyPlane = new VertexBuffer(Game.GraphicsDevice, VertexPositionColor.VertexDeclaration,
                plane.Length, BufferUsage.WriteOnly);
```  
Then finally the draw call.  
```  
            Game.GraphicsDevice.Clear(AtmosphereColor);
            Game.GraphicsDevice.SetVertexBuffer(SkyPlane);
            var position = Player.Camera.Position;
            var yaw = Player.Player.Yaw;
            Player.Camera.Position = Vector3.Zero;
            Player.Player.Yaw = 0;
            Player.Camera.Update(gameTime);
            Player.Camera.ApplyTo(SkyPlaneEffect);
            Player.Player.Yaw = yaw;
            Player.Camera.ApplyTo(CelestialPlaneEffect);
            Player.Player.Position = position;
            // Sky
            SkyPlaneEffect.FogColor = AtmosphereColor.ToVector3();
            SkyPlaneEffect.World = Matrix.CreateRotationX(MathHelper.Pi)
                * Matrix.CreateTranslation(0, 100, 0)
                * Matrix.CreateRotationX(MathHelper.TwoPi * CelestialAngle);
            SkyPlaneEffect.AmbientLightColor = WorldSkyColor.ToVector3();
            foreach (var pass in SkyPlaneEffect.CurrentTechnique.Passes)
            {
                pass.Apply();
                SkyPlaneEffect.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);
            }

All values are initialized (none that are null) but the error throws right at pass.Apply(). Sadly, Visual Studio is kind of bad with tracking exactly where the error occurs at with .Draw calls with MonoGame so I'm unsure of if it's actually pass.Apply() that's throwing the error.

Posts: 3

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 6821

Trending Articles