Minor change to ease video plugin merging. Made static NativeVertexFormat::Create function into a virtual function of VertexManager. I believe this is the last bit of code which is only declared in VideoCommon and defined in each of the plugins.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6479 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Jordan Woyak 2010-11-26 09:25:08 +00:00
parent 2e59d26133
commit e6658d5339
9 changed files with 36 additions and 19 deletions

View File

@ -99,15 +99,14 @@ public:
int GetVertexStride() const { return vertex_stride; }
static NativeVertexFormat *Create();
// TODO: move these in under private:
// TODO: move this under private:
u32 m_components; // VB_HAS_X. Bitmask telling what vertex components are present.
u32 vertex_stride;
protected:
// Let subclasses construct.
NativeVertexFormat() {}
u32 vertex_stride;
};
#endif // _NATIVEVERTEXFORMAT_H

View File

@ -183,7 +183,7 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr)
m_numLoadedVertices = 0;
m_VertexSize = 0;
m_numPipelineStages = 0;
m_NativeFmt = NativeVertexFormat::Create();
m_NativeFmt = g_vertex_manager->CreateNativeVertexFormat();
loop_counter = 0;
VertexLoader_Normal::Init();
VertexLoader_Position::Init();

View File

@ -2,6 +2,8 @@
#ifndef _VERTEXMANAGERBASE_H
#define _VERTEXMANAGERBASE_H
class NativeVertexFormat;
class VertexManager
{
public:
@ -35,6 +37,8 @@ public:
static void Flush();
virtual ::NativeVertexFormat* CreateNativeVertexFormat() = 0;
protected:
// TODO: make private after Flush() is merged
static void ResetBuffer();

View File

@ -26,6 +26,7 @@
#include "CPMemory.h"
#include "NativeVertexFormat.h"
#include "VertexManager.h"
class D3DVertexFormat : public NativeVertexFormat
{
@ -33,19 +34,20 @@ class D3DVertexFormat : public NativeVertexFormat
UINT m_num_elems;
public:
D3DVertexFormat();
~D3DVertexFormat();
D3DVertexFormat() : m_num_elems(0) {}
void Initialize(const PortableVertexDeclaration &_vtx_decl);
void SetupVertexPointers() const;
};
NativeVertexFormat* NativeVertexFormat::Create()
namespace DX11
{
NativeVertexFormat* VertexManager::CreateNativeVertexFormat()
{
return new D3DVertexFormat();
}
D3DVertexFormat::D3DVertexFormat() : m_num_elems(0) { }
D3DVertexFormat::~D3DVertexFormat() {}
}
DXGI_FORMAT VarToD3D(VarType t, int size)
{

View File

@ -33,6 +33,8 @@ public:
VertexManager();
~VertexManager();
NativeVertexFormat* CreateNativeVertexFormat();
private:
void CreateDeviceObjects();
void DestroyDeviceObjects();

View File

@ -26,25 +26,27 @@
#include "CPMemory.h"
#include "NativeVertexFormat.h"
#include "VertexManager.h"
class D3DVertexFormat : public NativeVertexFormat
{
LPDIRECT3DVERTEXDECLARATION9 d3d_decl;
public:
D3DVertexFormat();
D3DVertexFormat() : d3d_decl(NULL) {}
~D3DVertexFormat();
virtual void Initialize(const PortableVertexDeclaration &_vtx_decl);
virtual void SetupVertexPointers() const;
};
NativeVertexFormat *NativeVertexFormat::Create()
namespace DX9
{
NativeVertexFormat* VertexManager::CreateNativeVertexFormat()
{
return new D3DVertexFormat();
}
D3DVertexFormat::D3DVertexFormat() : d3d_decl(NULL)
{
}
D3DVertexFormat::~D3DVertexFormat()
@ -93,8 +95,8 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl)
{
vertex_stride = _vtx_decl.stride;
D3DVERTEXELEMENT9 *elems = new D3DVERTEXELEMENT9[32];
memset(elems, 0, sizeof(D3DVERTEXELEMENT9) * 32);
D3DVERTEXELEMENT9 elems[32];
memset(elems, 0, sizeof(elems));
// There's only one stream and it's 0, so the above memset takes care of that - no need to set Stream.
// Same for method.
@ -161,7 +163,6 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl)
PanicAlert("Failed to create D3D vertex declaration!");
return;
}
delete [] elems;
}
void D3DVertexFormat::SetupVertexPointers() const

View File

@ -28,6 +28,8 @@ namespace DX9
class VertexManager : public ::VertexManager
{
NativeVertexFormat* CreateNativeVertexFormat();
private:
void Draw(int stride);
// temp

View File

@ -24,10 +24,11 @@
#include "CPMemory.h"
#include "NativeVertexFormat.h"
#include "VertexManagerBase.h"
#include "VertexManager.h"
#define COMPILED_CODE_SIZE 4096
// TODO: this guy is never initialized
u32 s_prevcomponents; // previous state set
/*
#ifdef _WIN32
@ -67,12 +68,16 @@ public:
virtual void EnableComponents(u32 components);
};
namespace OGL
{
NativeVertexFormat *NativeVertexFormat::Create()
NativeVertexFormat* VertexManager::CreateNativeVertexFormat()
{
return new GLVertexFormat();
}
}
GLVertexFormat::GLVertexFormat()
{
#ifdef USE_JIT

View File

@ -32,6 +32,8 @@ class VertexManager : public ::VertexManager
public:
VertexManager();
NativeVertexFormat* CreateNativeVertexFormat();
private:
void Draw();
// temp