12GX_UTILITY_NAMESPACE_BEGIN()
30 class GmlReaderNotifier;
31 friend class GmlReaderNotifier;
35 class GxIntermediateMesh;
56 GX_FORCE_INLINE
b32 save(
GxStream& ) {
return false; }
61 b32 loadMeshAll(
const GxGmlReader& reader);
63 b32 loadMesh(GxIntermediateMesh* pIntermediateMesh);
65 b32 countMeshGroup(
void);
67 void loadGeometry(
const GxGmlReader& reader);
69 void optimizeVertexCache(
void);
78 const GxGmlReader::GxGmlParts* getGmlPartsByGeometryIndex(
const GxGmlReader& reader, u32 geometryIndex);
80 b32 isUseHalfTexCoord(
void)
const;
82 b32 isUseHalfNormal(
void)
const;
84 b32 isUseHalfBinormal(
void)
const;
86 b32 isUseHalfTangent(
void)
const;
95 GxIntermediateMesh* _pIntermediateMesh;
96 GX_CHAR* _pStringTableWritePoint;
105class GxResModelGml::GmlReaderNotifier :
public GxGmlReaderNotifierBase
113 GmlReaderNotifier(GxResModelGml* pResModelGml);
115 ~GmlReaderNotifier(
void)
override {}
118 GmlReaderNotifier(
void) {}
127 void onGmlCommonAsset(
const GxGmlCommonAssetCallback& value)
override;
129 void onGmlGeometry(
const GxGmlGeometryCallback& value)
override;
131 void onGmlParts(
const GxGmlPartsCallback& value)
override;
135 s32 findGmlElement(GxGmlReader::GxGmlTriangles* pTriangles, GxGmlReader::GxGmlTriangleElement::VERTICES_ELEMENT verticesElement, u32 set);
143 GxResModelGml* _pResModelGml;
151class GxResModelGml::GxVertexCache
169 virtual ~GxVertexCache(
void);
172 void initialize(u32 vertexSize, u32 maxVertexCount);
175 void terminateWriting(
void);
184 u32 push(
void* pVertex,
b32 checkArgument =
true);
186 constexpr u32 getSize(
void)
const {
return _writeIndex * _vertexSize; }
188 constexpr u32 getVertexCount(
void)
const {
return _writeIndex; }
190 constexpr u32 getVertexSize(
void)
const {
return _vertexSize; }
192 constexpr void* getBuffer(
void)
const {
return _pBuffer; }
194 constexpr u32 getMaxVertexCount(
void)
const {
return _maxVertexCount; }
207 GxVertexTable* _pVertexTable;
215class GxResModelGml::GxVertexCache::GxVertexTable
245 GxVertexTableNode(
void) :_pVertex(nullptr), _index(0), _pNext(nullptr) {}
254 void setData(
void* pVertex, u32 index, GxVertexTableNode* pNext);
256 void add(GxVertexTableNode* pNode);
258 constexpr void* getVertexPointer(
void) {
return _pVertex; }
260 constexpr u32 getIndex(
void) {
return _index; }
262 constexpr GxVertexTableNode* getNextNode(
void) {
return _pNext; }
272 GxVertexTableNode* _pNext;
292 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
301 GxVertexTable(u32 maxVertexCount);
303 ~GxVertexTable(
void);
312 void insert(
void* pVertex, u32 byteSize, u32 index);
314 s64 find(
void* pVertex, u32 byteSize);
323 GxVertexArray _hashArray;
325 GxVertexTableNode* _pNodeBuffer;
326 GxVertexTableNode* _pFreeNext;
327 GxVertexTableNode* _pEndOfBuffer;
335class GxResModelGml::GxIntermediateMesh
343 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
352 GxIntermediateMesh(
void);
354 virtual ~GxIntermediateMesh(
void);
367 u32 _triangleseElmentCount;
370 const GxGmlReader::GxGmlGeometry* _pGmlGeometry;
371 const GxGmlReader::GxGmlTriangles* _pGmlTriangles;
372 GxVertexCache _vertexCache;
381GX_UTILITY_NAMESPACE_END()
#define GX_ALLOCATE_MEMORY(pAllocatorList, size)
Definition GxAllocator.h:536
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
RENDER_INDEX_TYPE
インデックスバッファ形式
Definition GxRender.h:147
@ RENDER_VERTEX_ELEMENT_COUNT
同時サポートする頂点要素数
Definition GxRender.h:45
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
配列クラス
Definition GxArrayClassBase.h:18
オブジェクト基底クラス
Definition GxBase.h:88
基底クラス
Definition GxBase.h:51
モデルリソースクラス
Definition GxResModel.h:20
b32 loadMesh(const GxMeshFile *pMeshFile)
メッシュを読み込む
Definition GxResModel.cpp:820
b32 load(GxStream &stream, u32 dataSize)
リソース読み込み
Definition GxResModel.cpp:94
ストリーム基礎クラス
Definition GxStream.h:20
頂点宣言に使用する、頂点要素を定義するための構造体
Definition GxRenderVertexDeclaration.h:125
32bitブーリアン
Definition GxDefine.h:173