add create vertex buffer for a triangle
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "Mesh.h"
|
||||
#include "Utilities.h"
|
||||
#include "Vertex.h"
|
||||
|
||||
UINT Mesh::init(IDirect3DDevice9* pD3DDevice)
|
||||
{
|
||||
@@ -20,6 +21,13 @@ void Mesh::update(FLOAT dt)
|
||||
|
||||
void Mesh::render(IDirect3DDevice9* pD3DDevice)
|
||||
{
|
||||
// 1. set mesh data
|
||||
pD3DDevice->SetStreamSource(0, _pVertexBuffer, 0, _vertexStride);
|
||||
pD3DDevice->SetFVF(FVF);
|
||||
|
||||
// 2. draw call
|
||||
// vertex buffer only
|
||||
pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, _vertexCount / 3);
|
||||
}
|
||||
|
||||
void Mesh::deInit()
|
||||
@@ -30,6 +38,37 @@ void Mesh::deInit()
|
||||
|
||||
UINT Mesh::createVertexBuffer(IDirect3DDevice9* pD3DDevice)
|
||||
{
|
||||
// 1. define mesh parameters
|
||||
_vertexCount = 3;
|
||||
_vertexStride = sizeof(Vertex);
|
||||
|
||||
// 2. create vertex buffer object WITHOUT data
|
||||
HRESULT hr = pD3DDevice->CreateVertexBuffer(
|
||||
_vertexCount * _vertexStride, // vertex buffer size in bytes
|
||||
D3DUSAGE_WRITEONLY, // how to access the buffer
|
||||
FVF, // FVF - Flexible Vertex Format
|
||||
D3DPOOL_MANAGED, // video memory management
|
||||
&_pVertexBuffer, // vertex buffer object
|
||||
nullptr // not used anymore
|
||||
);
|
||||
CheckFailed(hr, 300);
|
||||
|
||||
// 3. set vertex data
|
||||
Vertex* pVertices = nullptr;
|
||||
|
||||
hr = _pVertexBuffer->Lock(0, 0, reinterpret_cast<void**>(&pVertices), 0); // transfer vertex buffer from video memory to cpu memory
|
||||
CheckFailed(hr, 310);
|
||||
|
||||
// fill vertex buffer with data
|
||||
pVertices[0] = Vertex(0.0f, 0.5f, 0.0f);
|
||||
pVertices[1] = Vertex(0.5f, -0.5f, 0.0f);
|
||||
pVertices[2] = Vertex(-0.5f, -0.5f, 0.0f);
|
||||
|
||||
hr = _pVertexBuffer->Unlock(); // transfer vertex buffer back from cpu memory to video memory
|
||||
CheckFailed(hr, 320);
|
||||
|
||||
pVertices = nullptr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user