Hi !
Ich kanns mir nicht erklären aber mit meiner dhVertexBuffer erstellt er keine VBS
Sie ist anders aufgebaut als Davids, da ich nicht so gern extra einen Buffer im Ram dafür erstellen möchte. (Was auch Vorteile hätte)
Hier mal Header:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class D3DHAWK_API dhVertexBuffer
{
private:
LPDIRECT3DVERTEXBUFFER9 m_pVB;
DWORD m_dwSize;
DWORD m_dwUsage;
DWORD m_dwFVF;
D3DPOOL m_Pool;
public:
bool Init(DWORD dwSize,DWORD dwFVF,DWORD dwUsage = D3DUSAGE_WRITEONLY,D3DPOOL Pool = D3DPOOL_DEFAULT);
bool Lock(DWORD Offset,DWORD Lenght,void* pData, int Flags = 0);
bool Unlock();
bool Release();
inline PDIRECT3DVERTEXBUFFER9 GetVB() {return m_pVB;}
inline DWORD GetSize() {return m_dwSize;}
inline DWORD GetFVF() {return m_dwFVF;}
inline DWORD GetUsage() {return m_dwUsage;}
inline D3DPOOL GetPool() {return m_Pool;}
};
|
Cpp:
|
Quellcode
|
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
|
#include "dh_init.h"
#include "dh_vertexbuffer.h"
bool dhVertexBuffer::Init(DWORD dwSize,DWORD dwUsage,DWORD dwFVF,D3DPOOL Pool)
{
//Pool = D3DPOOL_MANAGED
//dwUsage = D3DUSAGE_WRITEONLY
m_dwSize = dwSize;
m_dwUsage = dwUsage;
m_dwFVF = dwFVF;
m_Pool = Pool;
m_pVB = NULL;
if(SUCCEEDED(dhGraphics::GetDevice()->CreateVertexBuffer(dwSize,dwUsage,dwFVF,Pool,&m_pVB,NULL)))
{
return true;
}
return false;
}
bool dhVertexBuffer::Lock(DWORD Offset,DWORD Lenght,void* pData, int Flags)
{
if (pData == NULL)
return false;
if (FAILED(m_pVB->Lock(Offset,Lenght,(void**)pData,Flags)))
return false;
else
return true;
}
bool dhVertexBuffer::Unlock()
{
if (FAILED(m_pVB->Unlock()))
return false;
else
return true;
}
bool dhVertexBuffer::Release()
{
if (m_pVB)
{
m_pVB->Release();
m_pVB = NULL;
}
return true;
}
|
dhGraphics ist ne statischen klasse, so wie bei der TriBase, das wird später noch auf Singleton umgestellt.