forked from metin2/client
49 lines
870 B
C++
49 lines
870 B
C++
#include "StdAfx.h"
|
|
#include "GrpVertexShader.h"
|
|
#include "GrpD3DXBuffer.h"
|
|
#include "StateManager.h"
|
|
|
|
CVertexShader::CVertexShader()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
CVertexShader::~CVertexShader()
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
void CVertexShader::Initialize()
|
|
{
|
|
m_handle=0;
|
|
}
|
|
|
|
void CVertexShader::Destroy()
|
|
{
|
|
if (m_handle)
|
|
{
|
|
m_handle->Release();
|
|
m_handle = 0;
|
|
}
|
|
}
|
|
|
|
bool CVertexShader::CreateFromDiskFile(const char* c_szFileName, const DWORD* c_pdwVertexDecl)
|
|
{
|
|
Destroy();
|
|
|
|
LPD3DXBUFFER lpd3dxShaderBuffer;
|
|
LPD3DXBUFFER lpd3dxErrorBuffer;
|
|
if (FAILED(D3DXAssembleShaderFromFile(c_szFileName, 0, NULL, 0, &lpd3dxShaderBuffer, &lpd3dxErrorBuffer)))
|
|
return false;
|
|
|
|
if (FAILED(ms_lpd3dDevice->CreateVertexShader((const DWORD*)lpd3dxShaderBuffer->GetBufferPointer(), &m_handle)))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
void CVertexShader::Set()
|
|
{
|
|
STATEMANAGER.SetVertexShader(m_handle);
|
|
}
|