4 using SiliconStudio.Core.Mathematics;
5 using SiliconStudio.Paradox.Effects.Data;
6 using SiliconStudio.Paradox.Graphics.Data;
8 namespace SiliconStudio.Paradox.Extensions
14 var positionOffset = vertexBufferBinding.Declaration
15 .EnumerateWithOffsets()
16 .First(x => x.VertexElement.SemanticAsText ==
"POSITION")
19 var boundingBox = BoundingBox.Empty;
21 var vertexStride = vertexBufferBinding.Declaration.VertexStride;
22 fixed (byte* bufferStart = &vertexBufferBinding.
Buffer.Value.Content[vertexBufferBinding.
Offset])
24 byte* buffer = bufferStart;
25 for (
int i = 0; i < vertexBufferBinding.Count; ++i)
27 var position = (
Vector3*)(buffer + positionOffset);
30 Vector3.TransformCoordinate(ref *position, ref matrix, out transformedPosition);
31 BoundingBox.Merge(ref boundingBox, ref transformedPosition, out boundingBox);
33 buffer += vertexStride;
Represents an axis-aligned bounding box in three dimensional space.
Represents a three dimensional mathematical vector.
SiliconStudio.Core.Serialization.ContentReference< SiliconStudio.Paradox.Graphics.Data.BufferData > Buffer
Data field for SiliconStudio.Paradox.Graphics.VertexBufferBinding.Buffer.
Data type for SiliconStudio.Paradox.Graphics.VertexBufferBinding.
System.Int32 Offset
Data field for SiliconStudio.Paradox.Graphics.VertexBufferBinding.Offset.
static unsafe BoundingBox ComputeBoundingBox(this VertexBufferBindingData vertexBufferBinding, ref Matrix matrix)
Represents a 4x4 mathematical matrix.