Hi Everyone, this is probally not the most efficient way to encapsulate this but might be helpfull to beginners. Might the experts express their opinion about this class for me?
CTriangle.h:
#ifndef _CTriangle_H_
#define _CTriangle_H_
#include "CDirect3d.h"
#include <d3d9.h>
#include <d3dx9.h>
class CTriangle
{
public:
CTriangle::CTriangle(IDirect3DVertexBuffer9* vertexBuffer);
CTriangle::CTriangle();
CTriangle::~CTriangle();
void create(IDirect3DDevice9* pDevice);
void render(IDirect3DDevice9* pDevice);
private:
IDirect3DVertexBuffer9* vb;
const DWORD VERTEX_FVF;
struct VERTEX
{
float x,y,z;
DWORD dwColor;
};
};
#endif
CTriangle.cpp:
#include "CTriangle.h"
#include <d3d9.h>
#include <d3dx9.h>
CTriangle::CTriangle(IDirect3DVertexBuffer9* vertexBuffer):
VERTEX_FVF(D3DFVF_XYZ | D3DFVF_DIFFUSE)
{
this->vb = vertexBuffer;
}
CTriangle::CTriangle():
VERTEX_FVF(D3DFVF_XYZ | D3DFVF_DIFFUSE)
{
}
CTriangle::~CTriangle()
{
if(vb)
vb->Release();
}
void CTriangle::create(IDirect3DDevice9* pDevice)
{
VERTEX* triangle;
VERTEX data[] = {{-1.0f, 0.0f, 0.0f, 0xFF0000FF},
{-1.0f, 2.0f, 0.0f, 0xFF00FFFF},
{ 1.0f, 0.0f, 0.0f, 0xFFFF00FF},
{ 1.0f, 2.0f, 0.0f, 0xFF00FFFF}};
pDevice->CreateVertexBuffer(sizeof(VERTEX) * 4, D3DUSAGE_WRITEONLY, VERTEX_FVF, D3DPOOL_MANAGED, &vb, NULL);
vb->Lock(0, 0, (void**)&triangle, 0);
memcpy(triangle, data, sizeof(VERTEX) * 4);
vb->Unlock();
}
void CTriangle::render(IDirect3DDevice9* pDevice)
{
pDevice->SetFVF(VERTEX_FVF);
pDevice->SetStreamSource(0, vb, 0, sizeof(VERTEX));
pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
}
---DirectXSA---
Lachdannan Corp.
www.lachdannan.za.net