فهرست منبع

Text3D minor code cleanup.
Mention Text3D in the rendering documentation.

Lasse Öörni 12 سال پیش
والد
کامیت
1f8b84c4dc
3فایلهای تغییر یافته به همراه14 افزوده شده و 13 حذف شده
  1. 2 1
      Docs/Reference.dox
  2. 10 10
      Engine/UI/Text3D.cpp
  3. 2 2
      Engine/UI/Text3D.h

+ 2 - 1
Docs/Reference.dox

@@ -519,7 +519,7 @@ In the default render paths, the rendering operations proceed in the following o
 
 \section Rendering_Drawable Rendering components
 
-The rendering-related components defined by the %Graphics library are:
+The rendering-related components defined by the %Graphics and %UI libraries are:
 
 - Octree: spatial partitioning of Drawables for accelerated visibility queries. Needs to be created to the Scene (root node.)
 - Camera: describes a viewpoint for rendering, including projection parameters (FOV, near/far distance, perspective/orthographic)
@@ -535,6 +535,7 @@ The rendering-related components defined by the %Graphics library are:
 - CustomGeometry: renders runtime-defined unindexed geometry. The geometry data is not serialized or replicated over the network.
 - DecalSet: renders decal geometry on top of objects.
 - Zone: defines ambient light and fog settings for objects inside the zone volume.
+- Text3D: text that is rendered into the 3D view.
 
 \section Rendering_Optimizations Optimizations
 

+ 10 - 10
Engine/UI/Text3D.cpp

@@ -120,17 +120,17 @@ void Text3D::UpdateGeometry(const FrameInfo& frame)
             geometry->SetDrawRange(TRIANGLE_LIST, 0, 0, uiBatches_[i].vertexStart_, (uiBatches_[i].vertexEnd_ -
                 uiBatches_[i].vertexStart_) / UI_VERTEX_SIZE);
         }
-        
-        if (uiVertexData_.Size())
-        {
-            unsigned vertexCount = uiVertexData_.Size() / UI_VERTEX_SIZE;
-            if (vertexBuffer_->GetVertexCount() != vertexCount)
-                vertexBuffer_->SetSize(vertexCount, MASK_POSITION | MASK_COLOR | MASK_TEXCOORD1);
-            vertexBuffer_->SetData(&uiVertexData_[0]);
-        }
-        
-        geometryDirty_ = false;
     }
+    
+    if ((geometryDirty_ || vertexBuffer_->IsDataLost()) && uiVertexData_.Size())
+    {
+        unsigned vertexCount = uiVertexData_.Size() / UI_VERTEX_SIZE;
+        if (vertexBuffer_->GetVertexCount() != vertexCount)
+            vertexBuffer_->SetSize(vertexCount, MASK_POSITION | MASK_COLOR | MASK_TEXCOORD1);
+        vertexBuffer_->SetData(&uiVertexData_[0]);
+    }
+    
+    geometryDirty_ = false;
 }
 
 UpdateGeometryType Text3D::GetUpdateGeometryType()

+ 2 - 2
Engine/UI/Text3D.h

@@ -138,9 +138,9 @@ private:
     void MarkTextDirty();
     /// Update text and font.
     void UpdateText();
-    /// Update text UI batches.
+    /// Update text %UI batches.
     void UpdateTextBatches();
-    /// Create materials for text rendering. May only be called from the main thread. Text UI batches must be up-to-date.
+    /// Create materials for text rendering. May only be called from the main thread. Text %UI batches must be up-to-date.
     void UpdateTextMaterials(bool forceUpdate = false);
     
     /// Internally used text element.