aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/externals/extensions/include/nvsimplemesh/NvSimpleRawMesh.h
blob: abdc382c50519e315854306464d9261971cb734a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// TAGRELEASE: PUBLIC
#pragma once

class NvSimpleRawMesh
{
public:

    class Vertex
    {
    public:
        float Position[3];
        float Normal[3];
        float UV[2];
        float Tangent[3];
    };

    NvSimpleRawMesh();
    ~NvSimpleRawMesh();

    UINT GetIndexSize();
    INT GetVertexStride();
    INT GetNumVertices();
    INT GetNumIndices();

    Vertex* GetVertices();
    BYTE* GetRawVertices();
    BYTE* GetRawIndices();

    float* GetExtents() {return m_extents;}
    float* GetCenter() {return m_center;}

    static HRESULT TryGuessFilename(WCHAR *szDestBuffer,WCHAR *szMeshFilename, WCHAR *szGuessSuffix);
    ID3D11Texture2D *CreateD3D11DiffuseTextureFor(ID3D11Device *pd3dDevice);
    ID3D11Texture2D *CreateD3D11NormalsTextureFor(ID3D11Device *pd3dDevice);
    ID3D11Buffer *CreateD3D11IndexBufferFor(ID3D11Device *pd3dDevice);
    ID3D11Buffer *CreateD3D11VertexBufferFor(ID3D11Device *pd3dDevice);

    Vertex *m_pVertexData;
    BYTE *m_pIndexData;
    UINT m_iNumVertices;
    UINT m_iNumIndices;
    UINT m_IndexSize;

    float m_extents[3];
    float m_center[3];

    WCHAR m_szMeshFilename[MAX_PATH];
    WCHAR m_szDiffuseTexture[MAX_PATH];
    WCHAR m_szNormalTexture[MAX_PATH];

    // Utils to wrap making d3d11 render buffers from a loader mesh
    static const D3D11_INPUT_ELEMENT_DESC D3D11InputElements[];
    static const int D3D11ElementsSize; 
};