Beispiel #1
0
 public void Draw(Camera camera, int drawOrder)
 {
     foreach (KeyValuePair <Point3, TerrainGeometrySubsets> item in Data)
     {
         TerrainGeometrySubsets value = item.Value;
         if (value != null)
         {
             if (!duliBlocks.TryGetValue(item.Key, out Texture2D texture))
             {
                 continue;
             }
             Display.BlendState        = BlendState.Opaque;
             Display.DepthStencilState = DepthStencilState.Default;
             Display.RasterizerState   = RasterizerState.CullCounterClockwiseScissor;
             SubsystemSky subsystemSky = subsystemMovingBlocks.m_subsystemSky;
             shader.GetParameter("u_texture").SetValue(texture);
             shader.GetParameter("u_samplerState").SetValue(SamplerState.PointClamp);
             shader.GetParameter("u_fogColor").SetValue(new Vector3(subsystemSky.ViewFogColor));
             shader.GetParameter("u_fogStartInvLength").SetValue(new Vector2(subsystemSky.ViewFogRange.X, 1f / (subsystemSky.ViewFogRange.Y - subsystemSky.ViewFogRange.X)));
             shader.GetParameter("u_worldViewProjectionMatrix").SetValue(camera.ViewProjectionMatrix);
             shader.GetParameter("u_viewPosition").SetValue(camera.ViewPosition);
             Display.DrawUserIndexed(PrimitiveType.TriangleList, shader, TerrainVertex.VertexDeclaration, value.SubsetOpaque.Vertices.Array, 0, value.SubsetOpaque.Vertices.Count, value.SubsetOpaque.Indices.Array, 0, value.SubsetOpaque.Indices.Count);
         }
     }
 }
 public void Draw(Camera camera, int drawOrder)
 {
     KeyValuePair <Point2, TerrainGeometrySubsets>[] array = ILibrary.Data.m_array;
     for (int i = 0; i < ILibrary.Data.Count; i++)
     {
         TerrainGeometrySubsets value = array[i].Value;
         if (value != null)
         {
             Display.BlendState        = BlendState.Opaque;//矿物调试可用
             Display.DepthStencilState = DepthStencilState.Default;
             Display.RasterizerState   = RasterizerState.CullCounterClockwiseScissor;
             Shader       shader       = subsystemMovingBlocks.m_shader;
             SubsystemSky subsystemSky = subsystemMovingBlocks.m_subsystemSky;
             shader.GetParameter("u_texture").SetValue(ILibrary.texture);
             shader.GetParameter("u_samplerState").SetValue(SamplerState.PointClamp);
             shader.GetParameter("u_fogColor").SetValue(new Vector3(subsystemSky.ViewFogColor));
             shader.GetParameter("u_fogStartInvLength").SetValue(new Vector2(subsystemSky.ViewFogRange.X, 1f / (subsystemSky.ViewFogRange.Y - subsystemSky.ViewFogRange.X)));
             shader.GetParameter("u_worldViewProjectionMatrix").SetValue(camera.ViewProjectionMatrix);
             shader.GetParameter("u_viewPosition").SetValue(camera.ViewPosition);
             Display.DrawUserIndexed(PrimitiveType.TriangleList, shader, TerrainVertex.VertexDeclaration, value.SubsetOpaque.Vertices.Array, 0, value.SubsetOpaque.Vertices.Count, value.SubsetOpaque.Indices.Array, 0, value.SubsetOpaque.Indices.Count);
         }
     }
 }