コード例 #1
0
        public unsafe MyDebugMesh(MyRenderMessageDebugDrawMesh message)
        {
            vbuffer = MyManagers.Buffers.CreateVertexBuffer(
                "MyDebugMesh", message.VertexCount, sizeof(MyVertexFormatPositionColor),
                usage: ResourceUsage.Dynamic);

            Update(message);
        }
コード例 #2
0
 internal static void DebugMesh(MyRenderMessageDebugDrawMesh message)
 {
     if (!m_debugMeshes.ContainsKey(message.ID))
     {
         m_debugMeshes.Add(message.ID, new MyDebugMesh(message));
     }
     else
     {
         m_debugMeshes[message.ID].Update(message);
     }
 }
コード例 #3
0
        internal unsafe void Update(MyRenderMessageDebugDrawMesh message)
        {
            edges = !message.Shaded;
            depth = message.DepthRead;

            if (message.VertexCount > vbuffer.Capacity)
            {
                MyHwBuffers.ResizeVertexBuffer(vbuffer, message.VertexCount);
            }

            var mapping = MyMapping.MapDiscard(MyPrimitivesRenderer.RC.DeviceContext, vbuffer.Buffer);
            for (int i = 0; i < message.VertexCount; i++)
            {
                MyVertexFormatPositionColor vert = new MyVertexFormatPositionColor(Vector3.Transform(message.Vertices[i].Position, message.WorldMatrix), message.Vertices[i].Color);
                mapping.WriteAndPosition(ref vert);
            }
            mapping.Unmap();

            message.Vertices.Clear();
        }
コード例 #4
0
        internal unsafe void Update(MyRenderMessageDebugDrawMesh message)
        {
            edges = !message.Shaded;
            depth = message.DepthRead;

            if (vbuffer.ElementCount < message.VertexCount)
            {
                MyManagers.Buffers.Resize(vbuffer, message.VertexCount);
            }

            var mapping = MyMapping.MapDiscard(MyPrimitivesRenderer.RC, vbuffer);

            for (int i = 0; i < message.VertexCount; i++)
            {
                MyVertexFormatPositionColor vert = new MyVertexFormatPositionColor(Vector3.Transform(message.Vertices[i].Position, message.WorldMatrix), message.Vertices[i].Color);
                mapping.WriteAndPosition(ref vert);
            }
            mapping.Unmap();

            message.Vertices.Clear();
        }
コード例 #5
0
        public unsafe MyDebugMesh(MyRenderMessageDebugDrawMesh message)
        {
            vbuffer = MyHwBuffers.CreateVertexBuffer(message.VertexCount, sizeof(MyVertexFormatPositionColor), BindFlags.VertexBuffer, ResourceUsage.Dynamic, null, "MyDebugMesh");

            Update(message);
        }
コード例 #6
0
 internal static void DebugMesh(MyRenderMessageDebugDrawMesh message)
 {
     if (!m_debugMeshes.ContainsKey(message.ID))
         m_debugMeshes.Add(message.ID, new MyDebugMesh(message));
     else
         m_debugMeshes[message.ID].Update(message);
 }
コード例 #7
0
        public unsafe MyDebugMesh(MyRenderMessageDebugDrawMesh message)
        {
            vbuffer = MyHwBuffers.CreateVertexBuffer(message.VertexCount, sizeof(MyVertexFormatPositionColor), BindFlags.VertexBuffer, ResourceUsage.Dynamic, null, "MyDebugMesh");

            Update(message);
        }