12 #include "../Gray3D.h"
19 interface ID3DXBaseMesh;
37 : m_nVertStride(nVertStride)
56 return *((
cVector3f*)(m_Vertices.get_DataBytes() + (i * m_nVertStride)));
63 return *((
const cVector3f*)(m_Vertices.get_DataBytes() + (i * m_nVertStride)));
68 return (
cVector3f*)m_Vertices.get_DataBytes();
76 m_nVertStride = nVertStride;
77 m_Vertices.ReAlloc(m_nVertices * m_nVertStride);
87 size_t nSize = m_nVertices * m_nVertStride;
88 m_Vertices.ReAlloc(nSize + m_nVertStride);
89 memcpy(m_Vertices.get_DataBytes() + nSize, pVert, m_nVertStride);
99 template<
class _TYPE_VERT >
113 template<
typename _TYPE_INDEX = WORD >
124 return m_aIndexes.GetSize();
128 m_aIndexes.SetSize(nQty);
133 return m_aIndexes.GetAt(i);
137 return m_aIndexes.ElementAt(i);
141 return m_aIndexes.GetData();
145 return m_aIndexes.GetData();
150 return m_aIndexes.AddTail(
index);
154 m_aIndexes.RemoveAll();
163 for (
ITERATE_t i = 0; i < get_IndexQty(); i++)
182 template<
typename _TYPE_INDEX = WORD >
192 : m_Verts(nVertStride)
197 m_Index.FreeIndexes();
213 HRESULT put_MeshX(ID3DXBaseMesh* pMesh);
229 typedef DWORD HASHUV_t;
#define GRAY3D_LINK
Definition: Gray3D.h:15
#define IS_INDEX_GOOD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define ASSERT(exp)
Definition: cDebugAssert.h:87
cArrayVal< INDEX_t > m_aIndexes
DWORD or WORD = indexes into the m_Vertices. usually triangle triplets.
Definition: cMesh.h:179
INDEX_t get_Index(ITERATE_t i) const
Definition: cMesh.h:131
_TYPE_INDEX INDEX_t
_TYPE_INDEX = WORD or INT32
Definition: cMesh.h:121
ITERATE_t get_TriangleQty() const
Definition: cMesh.h:157
INDEX_t & ref_Index(ITERATE_t i)
Definition: cMesh.h:135
const INDEX_t * get_IndexPtr() const
Definition: cMesh.h:143
void FreeIndexes()
Definition: cMesh.h:152
void put_IndexQty(ITERATE_t nQty)
Definition: cMesh.h:126
ITERATE_t get_IndexQty() const
Definition: cMesh.h:122
INDEX_t * get_IndexPtr()
Definition: cMesh.h:139
ITERATE_t AddIndex(INDEX_t index)
Definition: cMesh.h:148
cMeshVertsV m_Verts
flexible vertex format array. ASSUME first element is always cVector3f
Definition: cMesh.h:202
cMeshT(size_t nVertStride=0)
Definition: cMesh.h:191
void FreeMesh()
Definition: cMesh.h:195
_TYPE_INDEX INDEX_t
_TYPE_INDEX = WORD or INT32
Definition: cMesh.h:190
cMeshIndexT< _TYPE_INDEX > m_Index
Index into m_Verts buffer.
Definition: cMesh.h:201
cMeshVertsT()
Definition: cMesh.h:107
cHeapBlock m_Vertices
cVector3f based flexible vertex format.
Definition: cMesh.h:96
cVector3f * get_VertPtr()
Definition: cMesh.h:66
size_t m_nVertStride
Size of each vertex blob. ASSUME (m_nVertStride >= sizeof(cVector3f))
Definition: cMesh.h:94
ITERATE_t get_VertQty() const
Definition: cMesh.h:46
const cVector3f & get_Vert(ITERATE_t i) const
Definition: cMesh.h:58
cVector3f & ref_Vert(ITERATE_t i)
Definition: cMesh.h:51
void SetVertQty(ITERATE_t dwQty, size_t nVertStride)
Definition: cMesh.h:71
cMeshVertsV(size_t nVertStride=sizeof(cVector3f))
Definition: cMesh.h:36
void AddVert(const void *pVert)
Definition: cMesh.h:84
size_t get_VertStride() const
Definition: cMesh.h:41
ITERATE_t m_nVertices
Quantity of (m_nVertStride sized) vertex elements allocated. COUNT_t.
Definition: cMesh.h:95
void FreeVerts()
Definition: cMesh.h:79
Definition: Gray3D.cpp:12
int ITERATE_t
like size_t but signed
Definition: Index.h:28
uint16 index
Definition: sample3.cpp:29