mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-12-01 03:47:07 -05:00
Cleanup.
This commit is contained in:
parent
12fe3f684e
commit
e3b0a82f0d
2 changed files with 396 additions and 396 deletions
|
@ -1,285 +1,285 @@
|
|||
/*
|
||||
* Copyright 2011-2012 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#ifndef __RENDERER_D3D9_H__
|
||||
#define __RENDERER_D3D9_H__
|
||||
|
||||
#define BGFX_CONFIG_RENDERER_DIRECT3D9EX (BX_PLATFORM_WINDOWS && 0)
|
||||
|
||||
#ifndef D3DSTREAMSOURCE_INDEXEDDATA
|
||||
# define D3DSTREAMSOURCE_INDEXEDDATA (1<<30)
|
||||
#endif// D3DSTREAMSOURCE_INDEXEDDATA
|
||||
|
||||
#ifndef D3DSTREAMSOURCE_INSTANCEDATA
|
||||
# define D3DSTREAMSOURCE_INSTANCEDATA (2<<30)
|
||||
#endif // D3DSTREAMSOURCE_INSTANCEDATA
|
||||
|
||||
#if BX_PLATFORM_WINDOWS
|
||||
# if !BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
# define D3D_DISABLE_9EX
|
||||
# endif // !BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
# include <d3d9.h>
|
||||
|
||||
# if BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
typedef HRESULT (WINAPI *Direct3DCreate9ExFn)(UINT SDKVersion, IDirect3D9Ex**);
|
||||
# else
|
||||
typedef IDirect3D9* (WINAPI *Direct3DCreate9Fn)(UINT SDKVersion);
|
||||
# endif // BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
|
||||
typedef int (WINAPI *D3DPERF_BeginEventFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef int (WINAPI *D3DPERF_EndEventFunc)();
|
||||
typedef void (WINAPI *D3DPERF_SetMarkerFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef void (WINAPI *D3DPERF_SetRegionFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef BOOL (WINAPI *D3DPERF_QueryRepeatFrameFunc)();
|
||||
typedef void (WINAPI *D3DPERF_SetOptionsFunc)(DWORD dwOptions);
|
||||
typedef DWORD (WINAPI *D3DPERF_GetStatusFunc)();
|
||||
|
||||
# define _PIX_SETMARKER(_col, _name) s_renderCtx.m_D3DPERF_SetMarker(_col, L#_name)
|
||||
# define _PIX_BEGINEVENT(_col, _name) s_renderCtx.m_D3DPERF_BeginEvent(_col, L#_name)
|
||||
# define _PIX_ENDEVENT() s_renderCtx.m_D3DPERF_EndEvent()
|
||||
|
||||
#elif BX_PLATFORM_XBOX360
|
||||
# include <xgraphics.h>
|
||||
# define D3DUSAGE_DYNAMIC 0 // not supported on X360
|
||||
# define D3DLOCK_DISCARD 0 // not supported on X360
|
||||
# define D3DERR_DEVICEHUNG D3DERR_DEVICELOST // not supported on X360
|
||||
# define D3DERR_DEVICEREMOVED D3DERR_DEVICELOST // not supported on X360
|
||||
# define D3DMULTISAMPLE_8_SAMPLES D3DMULTISAMPLE_4_SAMPLES
|
||||
# define D3DMULTISAMPLE_16_SAMPLES D3DMULTISAMPLE_4_SAMPLES
|
||||
|
||||
# define D3DFMT_DF24 D3DFMT_D24FS8
|
||||
|
||||
# define _PIX_SETMARKER(_col, _name) do {} while(0)
|
||||
# define _PIX_BEGINEVENT(_col, _name) do {} while(0)
|
||||
# define _PIX_ENDEVENT() do {} while(0)
|
||||
#endif // BX_PLATFORM_
|
||||
|
||||
#include "renderer_d3d.h"
|
||||
|
||||
namespace bgfx
|
||||
{
|
||||
#if BGFX_CONFIG_DEBUG_PIX
|
||||
# define PIX_SETMARKER(_col, _name) _PIX_SETMARKER(_col, _name)
|
||||
# define PIX_BEGINEVENT(_col, _name) _PIX_BEGINEVENT(_col, _name)
|
||||
# define PIX_ENDEVENT() _PIX_ENDEVENT()
|
||||
#else
|
||||
# define PIX_SETMARKER(_col, _name)
|
||||
# define PIX_BEGINEVENT(_col, _name)
|
||||
# define PIX_ENDEVENT()
|
||||
#endif // BGFX_CONFIG_DEBUG_PIX
|
||||
|
||||
# ifndef D3DFMT_ATI1
|
||||
# define D3DFMT_ATI1 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','1') )
|
||||
# endif // D3DFMT_ATI1
|
||||
|
||||
# ifndef D3DFMT_ATI2
|
||||
# define D3DFMT_ATI2 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','2') )
|
||||
# endif // D3DFMT_ATI2
|
||||
|
||||
# ifndef D3DFMT_ATOC
|
||||
# define D3DFMT_ATOC ( (D3DFORMAT)BX_MAKEFOURCC('A','T','O','C') )
|
||||
# endif // D3DFMT_ATOC
|
||||
|
||||
# ifndef D3DFMT_DF16
|
||||
# define D3DFMT_DF16 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','1','6') )
|
||||
# endif // D3DFMT_DF16
|
||||
|
||||
# ifndef D3DFMT_DF24
|
||||
# define D3DFMT_DF24 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','2','4') )
|
||||
# endif // D3DFMT_DF24
|
||||
|
||||
# ifndef D3DFMT_INST
|
||||
# define D3DFMT_INST ( (D3DFORMAT)BX_MAKEFOURCC('I','N','S','T') )
|
||||
# endif // D3DFMT_INST
|
||||
|
||||
# ifndef D3DFMT_INTZ
|
||||
# define D3DFMT_INTZ ( (D3DFORMAT)BX_MAKEFOURCC('I','N','T','Z') )
|
||||
# endif // D3DFMT_INTZ
|
||||
|
||||
# ifndef D3DFMT_NULL
|
||||
# define D3DFMT_NULL ( (D3DFORMAT)BX_MAKEFOURCC('N','U','L','L') )
|
||||
# endif // D3DFMT_NULL
|
||||
|
||||
# ifndef D3DFMT_RESZ
|
||||
# define D3DFMT_RESZ ( (D3DFORMAT)BX_MAKEFOURCC('R','E','S','Z') )
|
||||
# endif // D3DFMT_RESZ
|
||||
|
||||
# ifndef D3DFMT_RAWZ
|
||||
# define D3DFMT_RAWZ ( (D3DFORMAT)BX_MAKEFOURCC('R','A','W','Z') )
|
||||
# endif // D3DFMT_RAWZ
|
||||
|
||||
struct ExtendedFormat
|
||||
{
|
||||
enum Enum
|
||||
{
|
||||
Ati1,
|
||||
Ati2,
|
||||
Df16,
|
||||
Df24,
|
||||
Inst,
|
||||
Intz,
|
||||
Null,
|
||||
Resz,
|
||||
Rawz,
|
||||
|
||||
Count,
|
||||
};
|
||||
|
||||
D3DFORMAT m_fmt;
|
||||
DWORD m_usage;
|
||||
D3DRESOURCETYPE m_type;
|
||||
bool m_supported;
|
||||
};
|
||||
|
||||
struct Msaa
|
||||
{
|
||||
D3DMULTISAMPLE_TYPE m_type;
|
||||
DWORD m_quality;
|
||||
};
|
||||
|
||||
struct IndexBuffer
|
||||
{
|
||||
IndexBuffer()
|
||||
: m_ptr(NULL)
|
||||
, m_dynamic(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint32_t _size, void* _data);
|
||||
void update(uint32_t _offset, uint32_t _size, void* _data)
|
||||
{
|
||||
void* buffer;
|
||||
DX_CHECK(m_ptr->Lock(_offset
|
||||
, _size
|
||||
, &buffer
|
||||
, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
|
||||
) );
|
||||
|
||||
memcpy(buffer, _data, _size);
|
||||
|
||||
m_ptr->Unlock();
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
if (NULL != m_ptr)
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
m_dynamic = false;
|
||||
}
|
||||
}
|
||||
|
||||
void preReset();
|
||||
void postReset();
|
||||
|
||||
IDirect3DIndexBuffer9* m_ptr;
|
||||
uint32_t m_size;
|
||||
bool m_dynamic;
|
||||
};
|
||||
|
||||
struct VertexBuffer
|
||||
{
|
||||
VertexBuffer()
|
||||
: m_ptr(NULL)
|
||||
, m_dynamic(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint32_t _size, void* _data, VertexDeclHandle _declHandle);
|
||||
void update(uint32_t _offset, uint32_t _size, void* _data)
|
||||
{
|
||||
void* buffer;
|
||||
DX_CHECK(m_ptr->Lock(_offset
|
||||
, _size
|
||||
, &buffer
|
||||
, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
|
||||
) );
|
||||
|
||||
memcpy(buffer, _data, _size);
|
||||
|
||||
m_ptr->Unlock();
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
if (NULL != m_ptr)
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
m_dynamic = false;
|
||||
}
|
||||
}
|
||||
|
||||
void preReset();
|
||||
void postReset();
|
||||
|
||||
IDirect3DVertexBuffer9* m_ptr;
|
||||
uint32_t m_size;
|
||||
VertexDeclHandle m_decl;
|
||||
bool m_dynamic;
|
||||
};
|
||||
|
||||
struct VertexDeclaration
|
||||
{
|
||||
void create(const VertexDecl& _decl);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
IDirect3DVertexDeclaration9* m_ptr;
|
||||
VertexDecl m_decl;
|
||||
};
|
||||
|
||||
struct Shader
|
||||
{
|
||||
Shader()
|
||||
: m_ptr(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void create(bool _fragment, const Memory* _mem);
|
||||
DWORD* getShaderCode(uint8_t _fragmentBit, const Memory* _mem);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
ConstantBuffer::destroy(m_constantBuffer);
|
||||
m_constantBuffer = NULL;
|
||||
m_numPredefined = 0;
|
||||
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
IUnknown* m_ptr;
|
||||
ConstantBuffer* m_constantBuffer;
|
||||
PredefinedUniform m_predefined[PredefinedUniform::Count];
|
||||
uint8_t m_numPredefined;
|
||||
};
|
||||
|
||||
struct Program
|
||||
{
|
||||
void create(const Shader& _vsh, const Shader& _fsh)
|
||||
{
|
||||
BX_CHECK(NULL != _vsh.m_ptr, "Vertex shader doesn't exist.");
|
||||
m_vsh = &_vsh;
|
||||
|
||||
BX_CHECK(NULL != _fsh.m_ptr, "Fragment shader doesn't exist.");
|
||||
m_fsh = &_fsh;
|
||||
|
||||
memcpy(&m_predefined[0], _vsh.m_predefined, _vsh.m_numPredefined*sizeof(PredefinedUniform) );
|
||||
memcpy(&m_predefined[_vsh.m_numPredefined], _fsh.m_predefined, _fsh.m_numPredefined*sizeof(PredefinedUniform) );
|
||||
m_numPredefined = _vsh.m_numPredefined + _fsh.m_numPredefined;
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
m_numPredefined = 0;
|
||||
m_vsh = NULL;
|
||||
m_fsh = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright 2011-2012 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#ifndef __RENDERER_D3D9_H__
|
||||
#define __RENDERER_D3D9_H__
|
||||
|
||||
#define BGFX_CONFIG_RENDERER_DIRECT3D9EX (BX_PLATFORM_WINDOWS && 0)
|
||||
|
||||
#ifndef D3DSTREAMSOURCE_INDEXEDDATA
|
||||
# define D3DSTREAMSOURCE_INDEXEDDATA (1<<30)
|
||||
#endif// D3DSTREAMSOURCE_INDEXEDDATA
|
||||
|
||||
#ifndef D3DSTREAMSOURCE_INSTANCEDATA
|
||||
# define D3DSTREAMSOURCE_INSTANCEDATA (2<<30)
|
||||
#endif // D3DSTREAMSOURCE_INSTANCEDATA
|
||||
|
||||
#if BX_PLATFORM_WINDOWS
|
||||
# if !BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
# define D3D_DISABLE_9EX
|
||||
# endif // !BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
# include <d3d9.h>
|
||||
|
||||
# if BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
typedef HRESULT (WINAPI *Direct3DCreate9ExFn)(UINT SDKVersion, IDirect3D9Ex**);
|
||||
# else
|
||||
typedef IDirect3D9* (WINAPI *Direct3DCreate9Fn)(UINT SDKVersion);
|
||||
# endif // BGFX_CONFIG_RENDERER_DIRECT3D9EX
|
||||
|
||||
typedef int (WINAPI *D3DPERF_BeginEventFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef int (WINAPI *D3DPERF_EndEventFunc)();
|
||||
typedef void (WINAPI *D3DPERF_SetMarkerFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef void (WINAPI *D3DPERF_SetRegionFunc)(D3DCOLOR col, LPCWSTR wszName);
|
||||
typedef BOOL (WINAPI *D3DPERF_QueryRepeatFrameFunc)();
|
||||
typedef void (WINAPI *D3DPERF_SetOptionsFunc)(DWORD dwOptions);
|
||||
typedef DWORD (WINAPI *D3DPERF_GetStatusFunc)();
|
||||
|
||||
# define _PIX_SETMARKER(_col, _name) s_renderCtx.m_D3DPERF_SetMarker(_col, L#_name)
|
||||
# define _PIX_BEGINEVENT(_col, _name) s_renderCtx.m_D3DPERF_BeginEvent(_col, L#_name)
|
||||
# define _PIX_ENDEVENT() s_renderCtx.m_D3DPERF_EndEvent()
|
||||
|
||||
#elif BX_PLATFORM_XBOX360
|
||||
# include <xgraphics.h>
|
||||
# define D3DUSAGE_DYNAMIC 0 // not supported on X360
|
||||
# define D3DLOCK_DISCARD 0 // not supported on X360
|
||||
# define D3DERR_DEVICEHUNG D3DERR_DEVICELOST // not supported on X360
|
||||
# define D3DERR_DEVICEREMOVED D3DERR_DEVICELOST // not supported on X360
|
||||
# define D3DMULTISAMPLE_8_SAMPLES D3DMULTISAMPLE_4_SAMPLES
|
||||
# define D3DMULTISAMPLE_16_SAMPLES D3DMULTISAMPLE_4_SAMPLES
|
||||
|
||||
# define D3DFMT_DF24 D3DFMT_D24FS8
|
||||
|
||||
# define _PIX_SETMARKER(_col, _name) do {} while(0)
|
||||
# define _PIX_BEGINEVENT(_col, _name) do {} while(0)
|
||||
# define _PIX_ENDEVENT() do {} while(0)
|
||||
#endif // BX_PLATFORM_
|
||||
|
||||
#include "renderer_d3d.h"
|
||||
|
||||
namespace bgfx
|
||||
{
|
||||
#if BGFX_CONFIG_DEBUG_PIX
|
||||
# define PIX_SETMARKER(_col, _name) _PIX_SETMARKER(_col, _name)
|
||||
# define PIX_BEGINEVENT(_col, _name) _PIX_BEGINEVENT(_col, _name)
|
||||
# define PIX_ENDEVENT() _PIX_ENDEVENT()
|
||||
#else
|
||||
# define PIX_SETMARKER(_col, _name)
|
||||
# define PIX_BEGINEVENT(_col, _name)
|
||||
# define PIX_ENDEVENT()
|
||||
#endif // BGFX_CONFIG_DEBUG_PIX
|
||||
|
||||
# ifndef D3DFMT_ATI1
|
||||
# define D3DFMT_ATI1 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','1') )
|
||||
# endif // D3DFMT_ATI1
|
||||
|
||||
# ifndef D3DFMT_ATI2
|
||||
# define D3DFMT_ATI2 ( (D3DFORMAT)BX_MAKEFOURCC('A','T','I','2') )
|
||||
# endif // D3DFMT_ATI2
|
||||
|
||||
# ifndef D3DFMT_ATOC
|
||||
# define D3DFMT_ATOC ( (D3DFORMAT)BX_MAKEFOURCC('A','T','O','C') )
|
||||
# endif // D3DFMT_ATOC
|
||||
|
||||
# ifndef D3DFMT_DF16
|
||||
# define D3DFMT_DF16 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','1','6') )
|
||||
# endif // D3DFMT_DF16
|
||||
|
||||
# ifndef D3DFMT_DF24
|
||||
# define D3DFMT_DF24 ( (D3DFORMAT)BX_MAKEFOURCC('D','F','2','4') )
|
||||
# endif // D3DFMT_DF24
|
||||
|
||||
# ifndef D3DFMT_INST
|
||||
# define D3DFMT_INST ( (D3DFORMAT)BX_MAKEFOURCC('I','N','S','T') )
|
||||
# endif // D3DFMT_INST
|
||||
|
||||
# ifndef D3DFMT_INTZ
|
||||
# define D3DFMT_INTZ ( (D3DFORMAT)BX_MAKEFOURCC('I','N','T','Z') )
|
||||
# endif // D3DFMT_INTZ
|
||||
|
||||
# ifndef D3DFMT_NULL
|
||||
# define D3DFMT_NULL ( (D3DFORMAT)BX_MAKEFOURCC('N','U','L','L') )
|
||||
# endif // D3DFMT_NULL
|
||||
|
||||
# ifndef D3DFMT_RESZ
|
||||
# define D3DFMT_RESZ ( (D3DFORMAT)BX_MAKEFOURCC('R','E','S','Z') )
|
||||
# endif // D3DFMT_RESZ
|
||||
|
||||
# ifndef D3DFMT_RAWZ
|
||||
# define D3DFMT_RAWZ ( (D3DFORMAT)BX_MAKEFOURCC('R','A','W','Z') )
|
||||
# endif // D3DFMT_RAWZ
|
||||
|
||||
struct ExtendedFormat
|
||||
{
|
||||
enum Enum
|
||||
{
|
||||
Ati1,
|
||||
Ati2,
|
||||
Df16,
|
||||
Df24,
|
||||
Inst,
|
||||
Intz,
|
||||
Null,
|
||||
Resz,
|
||||
Rawz,
|
||||
|
||||
Count,
|
||||
};
|
||||
|
||||
D3DFORMAT m_fmt;
|
||||
DWORD m_usage;
|
||||
D3DRESOURCETYPE m_type;
|
||||
bool m_supported;
|
||||
};
|
||||
|
||||
struct Msaa
|
||||
{
|
||||
D3DMULTISAMPLE_TYPE m_type;
|
||||
DWORD m_quality;
|
||||
};
|
||||
|
||||
struct IndexBuffer
|
||||
{
|
||||
IndexBuffer()
|
||||
: m_ptr(NULL)
|
||||
, m_dynamic(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint32_t _size, void* _data);
|
||||
void update(uint32_t _offset, uint32_t _size, void* _data)
|
||||
{
|
||||
void* buffer;
|
||||
DX_CHECK(m_ptr->Lock(_offset
|
||||
, _size
|
||||
, &buffer
|
||||
, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
|
||||
) );
|
||||
|
||||
memcpy(buffer, _data, _size);
|
||||
|
||||
m_ptr->Unlock();
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
if (NULL != m_ptr)
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
m_dynamic = false;
|
||||
}
|
||||
}
|
||||
|
||||
void preReset();
|
||||
void postReset();
|
||||
|
||||
IDirect3DIndexBuffer9* m_ptr;
|
||||
uint32_t m_size;
|
||||
bool m_dynamic;
|
||||
};
|
||||
|
||||
struct VertexBuffer
|
||||
{
|
||||
VertexBuffer()
|
||||
: m_ptr(NULL)
|
||||
, m_dynamic(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint32_t _size, void* _data, VertexDeclHandle _declHandle);
|
||||
void update(uint32_t _offset, uint32_t _size, void* _data)
|
||||
{
|
||||
void* buffer;
|
||||
DX_CHECK(m_ptr->Lock(_offset
|
||||
, _size
|
||||
, &buffer
|
||||
, m_dynamic && 0 == _offset && m_size == _size ? D3DLOCK_DISCARD : 0
|
||||
) );
|
||||
|
||||
memcpy(buffer, _data, _size);
|
||||
|
||||
m_ptr->Unlock();
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
if (NULL != m_ptr)
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
m_dynamic = false;
|
||||
}
|
||||
}
|
||||
|
||||
void preReset();
|
||||
void postReset();
|
||||
|
||||
IDirect3DVertexBuffer9* m_ptr;
|
||||
uint32_t m_size;
|
||||
VertexDeclHandle m_decl;
|
||||
bool m_dynamic;
|
||||
};
|
||||
|
||||
struct VertexDeclaration
|
||||
{
|
||||
void create(const VertexDecl& _decl);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
IDirect3DVertexDeclaration9* m_ptr;
|
||||
VertexDecl m_decl;
|
||||
};
|
||||
|
||||
struct Shader
|
||||
{
|
||||
Shader()
|
||||
: m_ptr(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void create(bool _fragment, const Memory* _mem);
|
||||
DWORD* getShaderCode(uint8_t _fragmentBit, const Memory* _mem);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
ConstantBuffer::destroy(m_constantBuffer);
|
||||
m_constantBuffer = NULL;
|
||||
m_numPredefined = 0;
|
||||
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
IUnknown* m_ptr;
|
||||
ConstantBuffer* m_constantBuffer;
|
||||
PredefinedUniform m_predefined[PredefinedUniform::Count];
|
||||
uint8_t m_numPredefined;
|
||||
};
|
||||
|
||||
struct Program
|
||||
{
|
||||
void create(const Shader& _vsh, const Shader& _fsh)
|
||||
{
|
||||
BX_CHECK(NULL != _vsh.m_ptr, "Vertex shader doesn't exist.");
|
||||
m_vsh = &_vsh;
|
||||
|
||||
BX_CHECK(NULL != _fsh.m_ptr, "Fragment shader doesn't exist.");
|
||||
m_fsh = &_fsh;
|
||||
|
||||
memcpy(&m_predefined[0], _vsh.m_predefined, _vsh.m_numPredefined*sizeof(PredefinedUniform) );
|
||||
memcpy(&m_predefined[_vsh.m_numPredefined], _fsh.m_predefined, _fsh.m_numPredefined*sizeof(PredefinedUniform) );
|
||||
m_numPredefined = _vsh.m_numPredefined + _fsh.m_numPredefined;
|
||||
}
|
||||
|
||||
void destroy()
|
||||
{
|
||||
m_numPredefined = 0;
|
||||
m_vsh = NULL;
|
||||
m_fsh = NULL;
|
||||
}
|
||||
|
||||
void commit()
|
||||
{
|
||||
if (NULL != m_vsh->m_constantBuffer)
|
||||
|
@ -293,116 +293,116 @@ namespace bgfx
|
|||
}
|
||||
}
|
||||
|
||||
const Shader* m_vsh;
|
||||
const Shader* m_fsh;
|
||||
|
||||
PredefinedUniform m_predefined[PredefinedUniform::Count*2];
|
||||
uint8_t m_numPredefined;
|
||||
};
|
||||
|
||||
struct Texture
|
||||
{
|
||||
enum Enum
|
||||
{
|
||||
Texture2D,
|
||||
Texture3D,
|
||||
TextureCube,
|
||||
};
|
||||
|
||||
Texture()
|
||||
: m_ptr(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void createTexture(uint32_t _width, uint32_t _height, uint8_t _numMips, D3DFORMAT _fmt);
|
||||
void createVolumeTexture(uint32_t _width, uint32_t _height, uint32_t _depth, uint32_t _numMips, D3DFORMAT _fmt);
|
||||
void createCubeTexture(uint32_t _edge, uint32_t _numMips, D3DFORMAT _fmt);
|
||||
|
||||
uint8_t* lock(uint8_t _side, uint8_t _lod, uint32_t& _pitch, uint32_t& _slicePitch, const Rect* _rect = NULL);
|
||||
void unlock(uint8_t _side, uint8_t _lod);
|
||||
|
||||
void create(const Memory* _mem, uint32_t _flags);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, const Memory* _mem);
|
||||
void commit(uint8_t _stage);
|
||||
|
||||
union
|
||||
{
|
||||
IDirect3DBaseTexture9* m_ptr;
|
||||
IDirect3DTexture9* m_texture2d;
|
||||
IDirect3DVolumeTexture9* m_texture3d;
|
||||
IDirect3DCubeTexture9* m_textureCube;
|
||||
};
|
||||
|
||||
D3DTEXTUREFILTERTYPE m_minFilter;
|
||||
D3DTEXTUREFILTERTYPE m_magFilter;
|
||||
D3DTEXTUREFILTERTYPE m_mipFilter;
|
||||
D3DTEXTUREADDRESS m_tau;
|
||||
D3DTEXTUREADDRESS m_tav;
|
||||
D3DTEXTUREADDRESS m_taw;
|
||||
Enum m_type;
|
||||
bool m_srgb;
|
||||
};
|
||||
|
||||
struct RenderTarget
|
||||
{
|
||||
RenderTarget()
|
||||
: m_rt(NULL)
|
||||
, m_colorTexture(NULL)
|
||||
, m_color(NULL)
|
||||
, m_depthTexture(NULL)
|
||||
, m_depth(NULL)
|
||||
, m_minFilter(D3DTEXF_LINEAR)
|
||||
, m_magFilter(D3DTEXF_LINEAR)
|
||||
, m_width(0)
|
||||
, m_height(0)
|
||||
, m_flags(0)
|
||||
, m_depthOnly(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint16_t _width, uint16_t _height, uint32_t _flags, uint32_t _textureFlags);
|
||||
void createTextures();
|
||||
void destroyTextures();
|
||||
|
||||
void destroy()
|
||||
{
|
||||
destroyTextures();
|
||||
m_flags = 0;
|
||||
}
|
||||
|
||||
void preReset()
|
||||
{
|
||||
destroyTextures();
|
||||
}
|
||||
|
||||
void postReset()
|
||||
{
|
||||
createTextures();
|
||||
}
|
||||
|
||||
void commit(uint8_t _stage);
|
||||
void resolve();
|
||||
|
||||
Msaa m_msaa;
|
||||
IDirect3DSurface9* m_rt;
|
||||
IDirect3DTexture9* m_colorTexture;
|
||||
IDirect3DSurface9* m_color;
|
||||
IDirect3DTexture9* m_depthTexture;
|
||||
IDirect3DSurface9* m_depth;
|
||||
D3DTEXTUREFILTERTYPE m_minFilter;
|
||||
D3DTEXTUREFILTERTYPE m_magFilter;
|
||||
uint16_t m_width;
|
||||
uint16_t m_height;
|
||||
uint32_t m_flags;
|
||||
bool m_depthOnly;
|
||||
};
|
||||
|
||||
} // namespace bgfx
|
||||
|
||||
#endif // __RENDERER_D3D9_H__
|
||||
const Shader* m_vsh;
|
||||
const Shader* m_fsh;
|
||||
|
||||
PredefinedUniform m_predefined[PredefinedUniform::Count*2];
|
||||
uint8_t m_numPredefined;
|
||||
};
|
||||
|
||||
struct Texture
|
||||
{
|
||||
enum Enum
|
||||
{
|
||||
Texture2D,
|
||||
Texture3D,
|
||||
TextureCube,
|
||||
};
|
||||
|
||||
Texture()
|
||||
: m_ptr(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void createTexture(uint32_t _width, uint32_t _height, uint8_t _numMips, D3DFORMAT _fmt);
|
||||
void createVolumeTexture(uint32_t _width, uint32_t _height, uint32_t _depth, uint32_t _numMips, D3DFORMAT _fmt);
|
||||
void createCubeTexture(uint32_t _edge, uint32_t _numMips, D3DFORMAT _fmt);
|
||||
|
||||
uint8_t* lock(uint8_t _side, uint8_t _lod, uint32_t& _pitch, uint32_t& _slicePitch, const Rect* _rect = NULL);
|
||||
void unlock(uint8_t _side, uint8_t _lod);
|
||||
|
||||
void create(const Memory* _mem, uint32_t _flags);
|
||||
|
||||
void destroy()
|
||||
{
|
||||
DX_RELEASE(m_ptr, 0);
|
||||
}
|
||||
|
||||
void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, const Memory* _mem);
|
||||
void commit(uint8_t _stage);
|
||||
|
||||
union
|
||||
{
|
||||
IDirect3DBaseTexture9* m_ptr;
|
||||
IDirect3DTexture9* m_texture2d;
|
||||
IDirect3DVolumeTexture9* m_texture3d;
|
||||
IDirect3DCubeTexture9* m_textureCube;
|
||||
};
|
||||
|
||||
D3DTEXTUREFILTERTYPE m_minFilter;
|
||||
D3DTEXTUREFILTERTYPE m_magFilter;
|
||||
D3DTEXTUREFILTERTYPE m_mipFilter;
|
||||
D3DTEXTUREADDRESS m_tau;
|
||||
D3DTEXTUREADDRESS m_tav;
|
||||
D3DTEXTUREADDRESS m_taw;
|
||||
Enum m_type;
|
||||
bool m_srgb;
|
||||
};
|
||||
|
||||
struct RenderTarget
|
||||
{
|
||||
RenderTarget()
|
||||
: m_rt(NULL)
|
||||
, m_colorTexture(NULL)
|
||||
, m_color(NULL)
|
||||
, m_depthTexture(NULL)
|
||||
, m_depth(NULL)
|
||||
, m_minFilter(D3DTEXF_LINEAR)
|
||||
, m_magFilter(D3DTEXF_LINEAR)
|
||||
, m_width(0)
|
||||
, m_height(0)
|
||||
, m_flags(0)
|
||||
, m_depthOnly(false)
|
||||
{
|
||||
}
|
||||
|
||||
void create(uint16_t _width, uint16_t _height, uint32_t _flags, uint32_t _textureFlags);
|
||||
void createTextures();
|
||||
void destroyTextures();
|
||||
|
||||
void destroy()
|
||||
{
|
||||
destroyTextures();
|
||||
m_flags = 0;
|
||||
}
|
||||
|
||||
void preReset()
|
||||
{
|
||||
destroyTextures();
|
||||
}
|
||||
|
||||
void postReset()
|
||||
{
|
||||
createTextures();
|
||||
}
|
||||
|
||||
void commit(uint8_t _stage);
|
||||
void resolve();
|
||||
|
||||
Msaa m_msaa;
|
||||
IDirect3DSurface9* m_rt;
|
||||
IDirect3DTexture9* m_colorTexture;
|
||||
IDirect3DSurface9* m_color;
|
||||
IDirect3DTexture9* m_depthTexture;
|
||||
IDirect3DSurface9* m_depth;
|
||||
D3DTEXTUREFILTERTYPE m_minFilter;
|
||||
D3DTEXTUREFILTERTYPE m_magFilter;
|
||||
uint16_t m_width;
|
||||
uint16_t m_height;
|
||||
uint32_t m_flags;
|
||||
bool m_depthOnly;
|
||||
};
|
||||
|
||||
} // namespace bgfx
|
||||
|
||||
#endif // __RENDERER_D3D9_H__
|
||||
|
|
|
@ -333,7 +333,7 @@ private:
|
|||
uint32_t asciiPos = 0;
|
||||
for (uint32_t ii = 0; ii < size; ++ii)
|
||||
{
|
||||
_snprintf(&hex[hexPos], sizeof(hex)-hexPos, "0x%02x, ", data[asciiPos]);
|
||||
bx::snprintf(&hex[hexPos], sizeof(hex)-hexPos, "0x%02x, ", data[asciiPos]);
|
||||
hexPos += 6;
|
||||
|
||||
ascii[asciiPos] = isprint(data[asciiPos]) && data[asciiPos] != '\\' ? data[asciiPos] : '.';
|
||||
|
|
Loading…
Reference in a new issue