/// <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); }
/// <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); }