Example #1
0
        /// <summary>
        /// Set the vertex buffers
        /// </summary>
        /// <param name="vertexBuffers">The vertex buffers to set</param>
        /// <param name="startSlot">The slot on the device array to start setting vertex buffers to</param>
        /// <typeparam name="T">The type of the vertex in <see cref="VertexBuffer{TVertex}"/></typeparam>
        public void SetVertexBuffers <T>(ReadOnlySpan <VertexBuffer <T> > vertexBuffers, uint startSlot = 0)
            where T : unmanaged
        {
            Debug.Assert(StackSentinel.SafeToStackalloc <D3D12_VERTEX_BUFFER_VIEW>(vertexBuffers.Length));

            D3D12_VERTEX_BUFFER_VIEW *views = stackalloc D3D12_VERTEX_BUFFER_VIEW[vertexBuffers.Length];

            for (int i = 0; i < vertexBuffers.Length; i++)
            {
                views[i] = vertexBuffers[i].BufferView;
            }

            _list.Get()->IASetVertexBuffers(startSlot, (uint)vertexBuffers.Length, views);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="commandList"></param>
        /// <param name="color"></param>
        /// <param name="message"></param>
        public static void BeginEventOnCommandList(
            ID3D12GraphicsCommandList *commandList,
            Argb32 color,
            ReadOnlySpan <char> message
            )
        {
            var length = Utf8Length(message);
            var buff   = StackSentinel.SafeToStackalloc <byte>(length) ? stackalloc byte[length] : new byte[length];

            Encoding.UTF8.GetBytes(message, buff);

            var hr = _PIXBeginEventOnCommandList(commandList, Argb32.GetAs32BitArgb(color),
                                                 (byte *)Unsafe.AsPointer(ref MemoryMarshal.GetReference(buff)));

            Guard.ThrowIfFailed(hr);
        }