Ejemplo n.º 1
0
        private void DrawPositionColorLineListBufferNoMaterial(Device device, VertexBufferNoMaterial deviceBuffers, Matrix worldViewProj)
        {
            int layoutNumber = 1;

            device.InputAssembler.InputLayout       = _renderLayouts[layoutNumber].VertexLayout;
            device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.LineList;

            device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(deviceBuffers.VertexBuffer, (8 * 4), 0));

            _renderLayouts[layoutNumber].Pass.Apply();
            device.Draw(deviceBuffers.VertexCount, 0);
        }
Ejemplo n.º 2
0
		private void DrawPositionColorLineListBufferNoMaterial(Device device, VertexBufferNoMaterial deviceBuffers, Matrix worldViewProj)
		{
			int layoutNumber = 1;
			device.InputAssembler.InputLayout = _renderLayouts[layoutNumber].VertexLayout;
			device.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.LineList;

			device.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(deviceBuffers.VertexBuffer, (8 * 4), 0));

			_renderLayouts[layoutNumber].pass.Apply();
			device.Draw(deviceBuffers.VertexCount, 0);
		}
Ejemplo n.º 3
0
		private void BringOverlayGeometryIntoDeviceBuffers(D3D10OverlayContext overlayGeometry)
		{
			Device device = _hostDevice;
			if (device == null)
				return;

			// ------------------  Triangle buffer ------------------------------------
			{
				var buf = (PositionColorIndexedTriangleBuffer)overlayGeometry.PositionColorIndexedTriangleBuffers;

				var vertexBuffer = Buffer.Create<float>(device, buf.VertexStream, new BufferDescription()
				{
					BindFlags = BindFlags.VertexBuffer,
					CpuAccessFlags = CpuAccessFlags.None,
					OptionFlags = ResourceOptionFlags.None,
					SizeInBytes = buf.VertexStreamLength,
					Usage = ResourceUsage.Default
				});

				var indexBuffer = Buffer.Create<int>(device, buf.IndexStream, new BufferDescription()
				{
					BindFlags = BindFlags.IndexBuffer,
					CpuAccessFlags = CpuAccessFlags.None,
					OptionFlags = ResourceOptionFlags.None,
					SizeInBytes = buf.IndexStreamLength,
					Usage = ResourceUsage.Default
				});
				var indexCount = buf.TriangleCount * 3;

				var devBuffer = new VertexAndIndexDeviceBufferNoMaterial { VertexBuffer = vertexBuffer, VertexCount = buf.VertexCount, IndexBuffer = indexBuffer, IndexCount = indexCount };

				var oldBuffer = System.Threading.Interlocked.Exchange(ref _overlayGeometryTriangleDeviceBuffer, devBuffer);

				oldBuffer?.RemoveAndDispose();
			}

			// ------------------  Line list buffer ------------------------------------
			{
				var buf = (PositionColorLineListBuffer)overlayGeometry.PositionColorLineListBuffer;

				var vertexBuffer = Buffer.Create<float>(device, buf.VertexStream, new BufferDescription()
				{
					BindFlags = BindFlags.VertexBuffer,
					CpuAccessFlags = CpuAccessFlags.None,
					OptionFlags = ResourceOptionFlags.None,
					SizeInBytes = buf.VertexStreamLength,
					Usage = ResourceUsage.Default
				});

				var devBuffer = new VertexBufferNoMaterial { VertexBuffer = vertexBuffer, VertexCount = buf.VertexCount };

				var oldBuffer = System.Threading.Interlocked.Exchange(ref _overlayGeometryLineListBuffer, devBuffer);

				oldBuffer?.RemoveAndDispose();
			}
		}