92 lines
4.2 KiB
MQL5
92 lines
4.2 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| DXVertexBuffer.mqh |
|
|
//| Copyright 2000-2025, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2000-2025, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
#include "DXHandle.mqh"
|
|
//+------------------------------------------------------------------+
|
|
//| DX vertex buffer |
|
|
//+------------------------------------------------------------------+
|
|
class CDXVertexBuffer : public CDXHandleShared
|
|
{
|
|
public:
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
virtual ~CDXVertexBuffer(void)
|
|
{
|
|
Shutdown();
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create vertex buffer in specified context |
|
|
//+------------------------------------------------------------------+
|
|
template<typename TVertex>
|
|
bool Create(int context_handle,const TVertex &vertices[],uint start=0,uint count=WHOLE_ARRAY)
|
|
{
|
|
Shutdown();
|
|
m_context=context_handle;
|
|
m_handle=DXBufferCreate(m_context,DX_BUFFER_VERTEX,vertices,start,count);
|
|
return(m_handle!=INVALID_HANDLE);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Render |
|
|
//+------------------------------------------------------------------+
|
|
bool Render(uint start=0,uint count=WHOLE_ARRAY)
|
|
{
|
|
return(DXBufferSet(m_context,m_handle,start,count));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Shutdown |
|
|
//+------------------------------------------------------------------+
|
|
void Shutdown(void)
|
|
{
|
|
//--- relase handle
|
|
if(m_handle!=INVALID_HANDLE)
|
|
DXRelease(m_handle);
|
|
m_handle=INVALID_HANDLE;
|
|
}
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| DX index buffer |
|
|
//+------------------------------------------------------------------+
|
|
class CDXIndexBuffer : public CDXHandleShared
|
|
{
|
|
public:
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
virtual ~CDXIndexBuffer(void)
|
|
{
|
|
Shutdown();
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Create index buffer in specified context |
|
|
//+------------------------------------------------------------------+
|
|
bool Create(int context_handle,const uint &indices[],uint start=0,uint count=WHOLE_ARRAY)
|
|
{
|
|
Shutdown();
|
|
m_context=context_handle;
|
|
m_handle=DXBufferCreate(m_context,DX_BUFFER_INDEX,indices,start,count);
|
|
return(m_handle!=INVALID_HANDLE);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Render |
|
|
//+------------------------------------------------------------------+
|
|
bool Render(uint start=0,uint count=WHOLE_ARRAY)
|
|
{
|
|
return(DXBufferSet(m_context,m_handle,start,count));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Shutdown |
|
|
//+------------------------------------------------------------------+
|
|
void Shutdown(void)
|
|
{
|
|
//--- relase handle
|
|
if(m_handle!=INVALID_HANDLE)
|
|
DXRelease(m_handle);
|
|
m_handle=INVALID_HANDLE;
|
|
}
|
|
};
|
|
//+------------------------------------------------------------------+
|