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;
| |||
}
| |||
};
| |||
//+------------------------------------------------------------------+
|