118 lines
5.2 KiB
C++
118 lines
5.2 KiB
C++
// ---------------------------------------------------------------------------
|
|
//
|
|
// @file TwDirect3D11.h
|
|
// @brief Direct3D11 graphic functions
|
|
// @author Philippe Decaudin - http://www.antisphere.com
|
|
// @license This file is part of the AntTweakBar library.
|
|
// For conditions of distribution and use, see License.txt
|
|
//
|
|
// note: Private header
|
|
//
|
|
// ---------------------------------------------------------------------------
|
|
|
|
|
|
#if !defined ANT_TW_DIRECT3D11_INCLUDED
|
|
#define ANT_TW_DIRECT3D11_INCLUDED
|
|
|
|
#include "TwGraph.h"
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
class CTwGraphDirect3D11 : public ITwGraph
|
|
{
|
|
public:
|
|
virtual int Init();
|
|
virtual int Shut();
|
|
virtual void BeginDraw(int _WndWidth, int _WndHeight);
|
|
virtual void EndDraw();
|
|
virtual bool IsDrawing();
|
|
virtual void Restore();
|
|
virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false);
|
|
virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) { DrawLine(_X0, _Y0, _X1, _Y1, _Color, _Color, _AntiAliased); }
|
|
virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11);
|
|
virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) { DrawRect(_X0, _Y0, _X1, _Y1, _Color, _Color, _Color, _Color); }
|
|
virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode);
|
|
|
|
virtual void * NewTextObj();
|
|
virtual void DeleteTextObj(void *_TextObj);
|
|
virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth);
|
|
virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor);
|
|
|
|
virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY);
|
|
virtual void RestoreViewport();
|
|
virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height);
|
|
|
|
protected:
|
|
struct ID3D11Device * m_D3DDev;
|
|
struct ID3D11DeviceContext *m_D3DDevImmContext;
|
|
unsigned int m_D3DDevInitialRefCount;
|
|
bool m_Drawing;
|
|
const CTexFont * m_FontTex;
|
|
struct ID3D11Texture2D * m_FontD3DTex;
|
|
struct ID3D11ShaderResourceView *m_FontD3DTexRV;
|
|
int m_WndWidth;
|
|
int m_WndHeight;
|
|
int m_OffsetX;
|
|
int m_OffsetY;
|
|
void * m_ViewportInit;
|
|
RECT m_ViewportAndScissorRects[2];
|
|
|
|
struct CLineRectVtx
|
|
{
|
|
float m_Pos[3];
|
|
color32 m_Color;
|
|
};
|
|
struct CTextVtx
|
|
{
|
|
float m_Pos[3];
|
|
color32 m_Color;
|
|
float m_UV[2];
|
|
};
|
|
struct CConstants
|
|
{
|
|
float m_Offset[4];
|
|
float m_CstColor[4];
|
|
};
|
|
|
|
struct CTextObj
|
|
{
|
|
struct ID3D11Buffer * m_TextVertexBuffer;
|
|
struct ID3D11Buffer * m_BgVertexBuffer;
|
|
int m_NbTextVerts;
|
|
int m_NbBgVerts;
|
|
int m_TextVertexBufferSize;
|
|
int m_BgVertexBufferSize;
|
|
bool m_LineColors;
|
|
bool m_LineBgColors;
|
|
};
|
|
|
|
struct CState11 * m_State;
|
|
struct ID3D11DepthStencilState *m_DepthStencilState;
|
|
struct ID3D11BlendState * m_BlendState;
|
|
struct ID3D11RasterizerState * m_RasterState;
|
|
struct ID3D11RasterizerState * m_RasterStateAntialiased;
|
|
struct ID3D11RasterizerState * m_RasterStateMultisample;
|
|
struct ID3D11RasterizerState * m_RasterStateCullCW;
|
|
struct ID3D11RasterizerState * m_RasterStateCullCCW;
|
|
|
|
struct ID3D11VertexShader * m_LineRectVS;
|
|
struct ID3D11VertexShader * m_LineRectCstColorVS;
|
|
struct ID3D11PixelShader * m_LineRectPS;
|
|
struct ID3D11InputLayout * m_LineRectVertexLayout;
|
|
struct ID3D11VertexShader * m_TextVS;
|
|
struct ID3D11VertexShader * m_TextCstColorVS;
|
|
struct ID3D11PixelShader * m_TextPS;
|
|
struct ID3D11InputLayout * m_TextVertexLayout;
|
|
struct ID3D11Buffer * m_LineVertexBuffer;
|
|
struct ID3D11Buffer * m_RectVertexBuffer;
|
|
struct ID3D11Buffer * m_TrianglesVertexBuffer;
|
|
int m_TrianglesVertexBufferCount;
|
|
struct ID3D11Buffer * m_ConstantBuffer;
|
|
struct ID3D11SamplerState * m_SamplerState;
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
|
|
#endif // !defined ANT_TW_DIRECT3D11_INCLUDED
|