public void Render(GraphicsDeviceManager graphics, BasicEffect effect) { if (indices != null && verts != null) { if (verts.Count > 0) { effect.TextureEnabled = textureEnabled; if (textureEnabled) { if (Game1.textures.ContainsKey(textureName)) { effect.Texture = Game1.textures[textureName]; } else { //Console.WriteLine("missing texture: " + textureName); effect.Texture = Game1.textures["test"]; } } foreach (var pass in effect.CurrentTechnique.Passes) { pass.Apply(); graphics.GraphicsDevice.DrawUserIndexedPrimitives( PrimitiveType.TriangleList, verts_sealed, 0, verts_sealed.Length, indices, 0, indices.Length / 3, VertexPositionColorTexture.VertexDeclaration ); } if (Samplers.EnableWireframe) { effect.TextureEnabled = false; Samplers.SetToDevice(graphics, EngineRasterizer.Wireframe); foreach (var pass in effect.CurrentTechnique.Passes) { pass.Apply(); graphics.GraphicsDevice.DrawUserIndexedPrimitives( PrimitiveType.TriangleList, verts_sealed, 0, verts_sealed.Length, indices, 0, indices.Length / 3, VertexPositionColorTexture.VertexDeclaration ); } Samplers.SetToDevice(graphics, EngineRasterizer.Default); } } else { Console.WriteLine("Empty QuadList!"); } } }
public void Render(GraphicsDeviceManager graphics, BasicEffect effect) { Samplers.SetToDevice(graphics, EngineSampler.Default); foreach (var ql in normalq) { ql.Value.Render(graphics, effect); } Samplers.SetToDevice(graphics, EngineSampler.Animated); foreach (var ql in animatedq) { ql.Value.Render(graphics, effect); } Samplers.SetToDevice(graphics, EngineSampler.Default); if (flagq.ContainsKey(((QuadFlags)(1 << Game1.currentflag)).ToString())) { flagq[((QuadFlags)(1 << Game1.currentflag)).ToString()].Render(graphics, effect); } if (!Game1.HideInvisible) { effect.Alpha = 0.25f; if (flagq.ContainsKey("invis")) { flagq["invis"].Render(graphics, effect); } effect.Alpha = 1f; } }
public void Draw(GraphicsDeviceManager graphics, BasicEffect effect, AlphaTestEffect alpha) { Samplers.SetToDevice(graphics, EngineSampler.Default); foreach (var ql in normalq) { ql.Value.Draw(graphics, effect, null); } Samplers.SetToDevice(graphics, EngineSampler.Animated); foreach (var ql in animatedq) { ql.Value.Draw(graphics, effect, null); } Samplers.SetToDevice(graphics, EngineSampler.Default); graphics.GraphicsDevice.BlendState = BlendState.Additive; if (flagq.ContainsKey(((QuadFlags)(1 << Game1.currentflag)).ToString())) { flagq[((QuadFlags)(1 << Game1.currentflag)).ToString()].Draw(graphics, effect, alpha); } graphics.GraphicsDevice.BlendState = BlendState.NonPremultiplied; foreach (var ql in alphaq) { ql.Value.Draw(graphics, effect, alpha); } effect.Alpha = 0.5f; if (!Game1.HideWater) { foreach (var ql in waterq) { ql.Value.Draw(graphics, effect, null); } } if (!Game1.HideInvisible) { if (flagq.ContainsKey("invis")) { flagq["invis"].Draw(graphics, effect, null); } } effect.Alpha = 1f; }
//public static bool twoSided = false; private void DrawLevel() { if (RenderEnabled) { //if (loading != null && gameLoaded) //{ //if we have a sky if (sky != null) { effect.View = skycamera.ViewMatrix; effect.Projection = skycamera.ProjectionMatrix; effect.DiffuseColor = new Vector3(1, 1, 1); sky.RenderSky(graphics, effect); effect.DiffuseColor = new Vector3(2.0f, 2.0f, 2.0f); } //clear z buffer GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.Green, 1, 0); //render depending on lod if (lodEnabled) { effect.View = lowcamera.ViewMatrix; effect.Projection = lowcamera.ProjectionMatrix; if (show_inst) { Samplers.SetToDevice(graphics, EngineRasterizer.DoubleSided); foreach (var v in instanced) { v.Render(graphics, instanceEffect, lowcamera); } } if (show_paths) { Samplers.SetToDevice(graphics, EngineRasterizer.DoubleSided); foreach (var v in paths) { v.Render(graphics, instanceEffect, lowcamera); } } Samplers.SetToDevice(graphics, EngineRasterizer.Default); foreach (MGLevel qb in quads_low) { qb.Render(graphics, effect); } foreach (Kart k in karts) { k.Render(graphics, instanceEffect, lowcamera); } } else { if (show_inst) { Samplers.SetToDevice(graphics, EngineRasterizer.DoubleSided); foreach (var v in instanced) { v.Render(graphics, instanceEffect, camera); } } if (show_paths) { Samplers.SetToDevice(graphics, EngineRasterizer.DoubleSided); foreach (var v in paths) { v.Render(graphics, instanceEffect, camera); } } Samplers.SetToDevice(graphics, EngineRasterizer.Default); effect.View = camera.ViewMatrix; effect.Projection = camera.ProjectionMatrix; foreach (MGLevel qb in levels) { qb.Render(graphics, effect); } foreach (Kart k in karts) { k.Render(graphics, instanceEffect, camera); } } } }
//public static bool twoSided = false; private void DrawLevel(FirstPersonCamera cam = null) { if (RenderEnabled) { //if (loading != null && gameLoaded) //{ //if we have a sky and sky is enabled if (sky != null && settings.Sky) { effect.View = skycamera.ViewMatrix; effect.Projection = skycamera.ProjectionMatrix; effect.DiffuseColor /= 2; sky.DrawSky(graphics, effect, null); effect.DiffuseColor *= 2; alphaTestEffect.DiffuseColor = effect.DiffuseColor; //clear z buffer GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.Green, 1, 0); } effect.View = (cam != null ? cam.ViewMatrix : camera.ViewMatrix); effect.Projection = (cam != null ? cam.ProjectionMatrix : camera.ProjectionMatrix); alphaTestEffect.View = effect.View; alphaTestEffect.Projection = effect.Projection; if (settings.Models || settings.BotsPath) { Samplers.SetToDevice(graphics, EngineRasterizer.DoubleSided); if (settings.Models) { foreach (var v in instanced) { v.Draw(graphics, instanceEffect, null, (cam != null ? cam : camera)); } //render karts foreach (Kart k in karts) { k.Draw(graphics, instanceEffect, null, (cam != null ? cam : camera)); } } if (settings.BotsPath) { foreach (var v in paths) { v.Draw(graphics, instanceEffect, null, (cam != null ? cam : camera)); } } Samplers.SetToDevice(graphics, EngineRasterizer.Default); } Samplers.SetToDevice(graphics, EngineRasterizer.Default); //render depending on lod foreach (MGLevel qb in (settings.UseLowLod ? MeshLow : MeshHigh)) { qb.Draw(graphics, effect, alphaTestEffect); } if (settings.VisData) { //GraphicsDevice.Clear(ClearOptions.DepthBuffer, Color.Green, 1, 0); //texture enabled makes visdata invisible effect.TextureEnabled = false; foreach (var x in bbox) { foreach (var pass in effect.CurrentTechnique.Passes) { pass.Apply(); graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, x, 0, x.Length / 2); } } if (settings.VisDataLeaves) { foreach (var x in bbox2) { foreach (var pass in effect.CurrentTechnique.Passes) { pass.Apply(); graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineList, x, 0, x.Length / 2); } } } } } }