void DrawWithAlfaBlending(GraphicsDevice graphics, RasterizerStateDescription2 stated, IGeometryData geo) { var context = graphics.ImmediateContext; var mode = stated.CullMode; if (mode == CullMode.Back || mode == CullMode.None) { stated.CullMode = CullMode.Back; using (var rasterizerState = graphics.CreateRasterizerState(stated)) { context.Rasterizer.State = rasterizerState; graphics.ImmediateContext.DrawIndexed(geo.Indices.Length, 0, 0); } } if (mode == CullMode.Front || mode == CullMode.None) { stated.CullMode = CullMode.Front; using (var rasterizerState = graphics.CreateRasterizerState(stated)) { context.Rasterizer.State = rasterizerState; graphics.ImmediateContext.DrawIndexed(geo.Indices.Length, 0, 0); } } }
public TilingPlaneEntity(IRigidBody body, IGeometryData geometryData) { if (geometryData.Prim.PrimType != CollideType.Plane) {throw new InvalidOperationException("You may not use this class with a CollideType other than CollideType.Plane");} this.body = body; this.geometryData = geometryData; //this.Texture = texture; }
public static void WriteObj(FileInfo file, IGeometryData geo) { var meshes = new List <WriteMesh>(); var mesh = new SimpleMesh(); var map = new Dictionary <Vector3, int>(); var indeces = new List <int>(); for (var index = 0; index < geo.Positions.Length; index++) { var v = geo.Positions[index]; if (!map.ContainsKey(v)) { map.Add(v, map.Count); } } for (var index = 0; index < geo.Indices.Length; index++) { var i = geo.Indices[index]; var v = geo.Positions[i]; indeces.Add(map[v]); } var points = map.Keys.ToArray(); var pcount = points.Length * 3; var pp = new double[pcount]; var pindex = 0; for (var index = 0; index < points.Length; index++) { var v = points[index]; pp[pindex++] = v.X; pp[pindex++] = v.Y; pp[pindex++] = v.Z; } mesh.Initialize(new VectorArray3d(pp), new VectorArray3i(indeces.ToArray())); meshes.Add(new WriteMesh(mesh, $"d3dlab export")); StandardMeshWriter.WriteFile(file.FullName, meshes, WriteOptions.Defaults); }
public static void ToObjFile(this IGeometryData geo, string path) { G3Writers.WriteObj(new System.IO.FileInfo(path), geo); }