Files
dolphin/Source/Core/VideoCommon/NativeVertexFormat.h
T

105 lines
2.2 KiB
C++
Raw Normal View History

// Copyright 2013 Dolphin Emulator Project
// Licensed under GPLv2
// Refer to the license.txt file included.
2008-12-08 04:46:09 +00:00
#pragma once
2008-12-08 04:46:09 +00:00
#include "Common.h"
2008-12-08 04:46:09 +00:00
// m_components
2013-04-24 09:21:54 -04:00
enum
{
2008-12-08 04:46:09 +00:00
VB_HAS_POSMTXIDX =(1<<1),
VB_HAS_TEXMTXIDX0=(1<<2),
VB_HAS_TEXMTXIDX1=(1<<3),
VB_HAS_TEXMTXIDX2=(1<<4),
VB_HAS_TEXMTXIDX3=(1<<5),
VB_HAS_TEXMTXIDX4=(1<<6),
VB_HAS_TEXMTXIDX5=(1<<7),
VB_HAS_TEXMTXIDX6=(1<<8),
VB_HAS_TEXMTXIDX7=(1<<9),
VB_HAS_TEXMTXIDXALL=(0xff<<2),
//VB_HAS_POS=0, // Implied, it always has pos! don't bother testing
VB_HAS_NRM0=(1<<10),
VB_HAS_NRM1=(1<<11),
VB_HAS_NRM2=(1<<12),
VB_HAS_NRMALL=(7<<10),
VB_HAS_COL0=(1<<13),
VB_HAS_COL1=(1<<14),
VB_HAS_UV0=(1<<15),
VB_HAS_UV1=(1<<16),
VB_HAS_UV2=(1<<17),
VB_HAS_UV3=(1<<18),
VB_HAS_UV4=(1<<19),
VB_HAS_UV5=(1<<20),
VB_HAS_UV6=(1<<21),
VB_HAS_UV7=(1<<22),
VB_HAS_UVALL=(0xff<<15),
VB_HAS_UVTEXMTXSHIFT=13,
};
2011-01-31 01:53:57 +00:00
#ifdef WIN32
2008-12-08 04:46:09 +00:00
#define LOADERDECL __cdecl
2011-01-31 01:53:57 +00:00
#else
#define LOADERDECL
#endif
2008-12-08 04:46:09 +00:00
typedef void (LOADERDECL *TPipelineFunction)();
enum VarType
{
VAR_UNSIGNED_BYTE, // GX_U8 = 0
VAR_BYTE, // GX_S8 = 1
VAR_UNSIGNED_SHORT, // GX_U16 = 2
VAR_SHORT, // GX_S16 = 3
VAR_FLOAT, // GX_F32 = 4
2008-12-08 04:46:09 +00:00
};
struct AttributeFormat
{
VarType type;
int components;
int offset;
bool enable;
bool integer;
};
2008-12-08 04:46:09 +00:00
struct PortableVertexDeclaration
{
int stride;
AttributeFormat position;
AttributeFormat normals[3];
AttributeFormat colors[2];
AttributeFormat texcoords[8];
AttributeFormat posmtx;
2008-12-08 04:46:09 +00:00
};
// The implementation of this class is specific for GL/DX, so NativeVertexFormat.cpp
// is in the respective backend, not here in VideoCommon.
2008-12-08 04:46:09 +00:00
// Note that this class can't just invent arbitrary vertex formats out of its input -
2008-12-08 04:46:09 +00:00
// all the data loading code must always be made compatible.
class NativeVertexFormat : NonCopyable
2008-12-08 04:46:09 +00:00
{
public:
virtual ~NativeVertexFormat() {}
virtual void Initialize(const PortableVertexDeclaration &vtx_decl) = 0;
2011-01-24 11:57:17 +00:00
virtual void SetupVertexPointers() = 0;
u32 GetVertexStride() const { return vertex_stride; }
// TODO: move this under private:
2008-12-08 04:46:09 +00:00
u32 m_components; // VB_HAS_X. Bitmask telling what vertex components are present.
protected:
// Let subclasses construct.
NativeVertexFormat() {}
u32 vertex_stride;
2008-12-08 04:46:09 +00:00
};