Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
VertexDeclaration.cs
浏览该文件的文档.
1namespace Engine.Graphics {
2 public class VertexDeclaration : IEquatable<VertexDeclaration> {
3 public readonly VertexElement[] m_elements;
4
5 public static List<VertexElement[]> m_allElements = [];
6
7 public ReadOnlyList<VertexElement> VertexElements => new(m_elements);
8
9 public int VertexStride { get; set; }
10
11 public VertexDeclaration(params VertexElement[] elements) : this(true, elements) { }
12
13 public VertexDeclaration(bool useCache = true, params VertexElement[] elements) {
14 if (elements.Length == 0) {
15 throw new ArgumentException("There must be at least one VertexElement.");
16 }
17 foreach (VertexElement vertexElement in elements) {
18 if (vertexElement.Offset < 0) {
19 vertexElement.Offset = VertexStride;
20 }
21 VertexStride = MathUtils.Max(VertexStride, vertexElement.Offset + vertexElement.Format.GetSize());
22 }
23 if (!useCache) {
24 m_elements = elements.ToArray();
25 return;
26 }
27 foreach (VertexElement[] element in m_allElements) {
28 if (elements.SequenceEqual(element)) {
29 m_elements = element;
30 break;
31 }
32 }
33 if (m_elements == null) {
34 m_elements = elements.ToArray();
36 }
37 }
38
39 public override int GetHashCode() => m_elements.GetHashCode();
40
41 public override bool Equals(object other) => other is VertexDeclaration && Equals((VertexDeclaration)other);
42
43 public bool Equals(VertexDeclaration other) => (object)other != null && m_elements == other.m_elements;
44
45 public static bool operator ==(VertexDeclaration vd1, VertexDeclaration vd2) => vd1?.Equals(vd2) ?? ((object)vd2 == null);
46
47 public static bool operator !=(VertexDeclaration vd1, VertexDeclaration vd2) => !(vd1 == vd2);
48 }
49}
static List< VertexElement[]> m_allElements
bool Equals(VertexDeclaration other)
VertexDeclaration(bool useCache=true, params VertexElement[] elements)
static bool operator==(VertexDeclaration vd1, VertexDeclaration vd2)
ReadOnlyList< VertexElement > VertexElements
static bool operator!=(VertexDeclaration vd1, VertexDeclaration vd2)
VertexDeclaration(params VertexElement[] elements)
static int Max(int x1, int x2)