소스 검색

Fixed Direct3D build.

Lasse Öörni 14 년 전
부모
커밋
41b001f995
2개의 변경된 파일18개의 추가작업 그리고 1개의 파일을 삭제
  1. 15 0
      Engine/Graphics/Direct3D9/D3D9VertexBuffer.cpp
  2. 3 1
      Engine/Graphics/Direct3D9/D3D9VertexBuffer.h

+ 15 - 0
Engine/Graphics/Direct3D9/D3D9VertexBuffer.cpp

@@ -289,6 +289,21 @@ void VertexBuffer::UpdateOffsets()
     vertexSize_ = elementOffset;
     vertexSize_ = elementOffset;
 }
 }
 
 
+unsigned long long VertexBuffer::GetHash(unsigned streamIndex, unsigned useMask)
+{
+    unsigned long long bufferHash = elementMask_;
+    unsigned long long maskHash;
+    if (useMask == MASK_DEFAULT)
+        maskHash = ((unsigned long long)elementMask_) * 0x100000000ULL;
+    else
+        maskHash = ((unsigned long long)useMask) * 0x100000000ULL;
+    
+    bufferHash |= maskHash;
+    bufferHash <<= streamIndex * MAX_VERTEX_ELEMENTS;
+    
+    return bufferHash;
+}
+
 unsigned VertexBuffer::GetVertexSize(unsigned mask)
 unsigned VertexBuffer::GetVertexSize(unsigned mask)
 {
 {
     unsigned vertexSize = 0;
     unsigned vertexSize = 0;

+ 3 - 1
Engine/Graphics/Direct3D9/D3D9VertexBuffer.h

@@ -86,7 +86,9 @@ public:
     const SharedArrayPtr<unsigned char>& GetMorphRangeResetData() { return morphRangeResetData_; }
     const SharedArrayPtr<unsigned char>& GetMorphRangeResetData() { return morphRangeResetData_; }
     /// Return whether has a morph vertex range defined.
     /// Return whether has a morph vertex range defined.
     bool HasMorphRange() const { return morphRangeCount_ > 0; }
     bool HasMorphRange() const { return morphRangeCount_ > 0; }
-
+    /// Return buffer hash for state sorting.
+    unsigned long long GetHash(unsigned streamIndex, unsigned useMask);
+    
     /// Return vertex size corresponding to a vertex element mask.
     /// Return vertex size corresponding to a vertex element mask.
     static unsigned GetVertexSize(unsigned elementMask);
     static unsigned GetVertexSize(unsigned elementMask);