📄 d3d8bufferfactory.cpp
字号:
#include "D3D8BufferFactory.h"
#include "D3D8IndexBuffer.h"
#include "D3D8VertexBuffer.h"
#include "D3DMapping.h"
#include "../../Main/RenderOperation.h"
IndexBuffer* D3D8BufferFactory::CreateIndexBuffer(IndexData* id)
{
D3D8IndexBuffer* buf = new D3D8IndexBuffer(m_pd3dDevice,id);
return (IndexBuffer*)buf;
}
VertexBuffer* D3D8BufferFactory::CreateVertexBuffer(VertexData* vd)
{
D3D8VertexBuffer* buf = new D3D8VertexBuffer(m_pd3dDevice,vd);
return (VertexBuffer*)buf;
}
Int32 D3D8BufferFactory::CreateVertexDeclaration(RenderOperation* ro)
{
DWORD shader= 0xFFFFFFFF;
DWORD *shaderDecl = new DWORD[ro->vertexData.size()*2+1];
std::vector<VertexData*>::iterator it;
Int32 i=0;
for(it =ro->vertexData.begin();it!=ro->vertexData.end();++it,++i )
{
shaderDecl[i*2] = D3DVSD_STREAM(i);
DWORD _vertex_register,_type;
D3DMapping::Get((*it)->vertex_type,_vertex_register,_type);
shaderDecl[i*2+1] = D3DVSD_REG(_vertex_register,_type);
}
shaderDecl[i*2] = D3DVSD_END();
HRESULT hr = m_pd3dDevice->CreateVertexShader(shaderDecl,NULL,&shader,0);
delete[] shaderDecl;
if( FAILED(hr))
return 0xFFFFFFFF;
return shader;
}
void D3D8BufferFactory::DestroyIndexBuffer(IndexBuffer* ib)
{
delete ib;
}
void D3D8BufferFactory::DestroyVertexBuffer(VertexBuffer* vb)
{
delete vb;
}
void D3D8BufferFactory::DestroyVertexDeclaration(Int32 vd)
{
m_pd3dDevice->DeleteVertexShader(vd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -