Fix SpeedTree LOD strip handling to render all strips per LOD
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// SpeedTreeRTExample Class
|
||||
//
|
||||
// (c) 2003 IDV, Inc.
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <d3dx9.h>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <cstdint>
|
||||
|
||||
#include "EterLib/GrpObjectInstance.h"
|
||||
#include "EterLib/GrpImageInstance.h"
|
||||
@@ -91,8 +92,8 @@ public:
|
||||
virtual void SetPosition(float x, float y, float z);
|
||||
virtual void CalculateBBox();
|
||||
|
||||
virtual void OnRender(); // Render 시에 메소드, 그러나 프리뷰나 특수한 경우에만 직접 Render 콜을 부르며
|
||||
// 그 이외에는 RenderBranches, RenderFronds 등의 메소드를 CSpeedTreeForest에서 호출한다.
|
||||
virtual void OnRender(); // Render ½Ã¿¡ ¸Þ¼Òµå, ±×·¯³ª ÇÁ¸®ºä³ª Ư¼öÇÑ °æ¿ì¿¡¸¸ Á÷Á¢ Render ÄÝÀ» ºÎ¸£¸ç
|
||||
// ±× À̿ܿ¡´Â RenderBranches, RenderFronds µîÀÇ ¸Þ¼Òµå¸¦ CSpeedTreeForest¿¡¼ È£ÃâÇÑ´Ù.
|
||||
virtual void OnBlendRender() {}
|
||||
virtual void OnRenderToShadowMap() {}
|
||||
virtual void OnRenderShadow() {}
|
||||
@@ -172,13 +173,15 @@ private:
|
||||
LPDIRECT3DVERTEXBUFFER9 m_pBranchVertexBuffer; // branch vertex buffer
|
||||
unsigned int m_unBranchVertexCount; // number of vertices in branches
|
||||
LPDIRECT3DINDEXBUFFER9 m_pBranchIndexBuffer; // branch index buffer
|
||||
unsigned short* m_pBranchIndexCounts; // number of indexes per branch LOD level
|
||||
std::vector<uint32_t> m_branchStripOffsets; // strip start indices (LOD0 ordering)
|
||||
std::vector<std::vector<uint16_t>> m_branchStripLengths; // [lod][strip] index counts
|
||||
|
||||
// frond buffers
|
||||
LPDIRECT3DVERTEXBUFFER9 m_pFrondVertexBuffer; // frond vertex buffer
|
||||
unsigned int m_unFrondVertexCount; // number of vertices in frond
|
||||
LPDIRECT3DINDEXBUFFER9 m_pFrondIndexBuffer; // frond index buffer
|
||||
unsigned short* m_pFrondIndexCounts; // number of indexes per frond LOD level
|
||||
std::vector<uint32_t> m_frondStripOffsets; // strip start indices (LOD0 ordering)
|
||||
std::vector<std::vector<uint16_t>> m_frondStripLengths; // [lod][strip] index counts
|
||||
|
||||
// leaf buffers
|
||||
unsigned short m_usNumLeafLods; // the number of leaf LODs
|
||||
@@ -205,3 +208,4 @@ private:
|
||||
};
|
||||
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user