Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include "VertexBuffer.h"
  2. #include "GraphicsEngine.h"
  3.  
  4.  
  5. VertexBuffer::VertexBuffer():m_layout(0),m_buffer(0)
  6. {
  7. }
  8.  
  9. bool VertexBuffer::load(void* list_vertices,UINT size_vertex,UINT size_list,void*shader_byte_code,UINT size_byte_shader)
  10. {
  11.     if (m_buffer)m_buffer->Release();
  12.     if (m_layout)m_layout->Release();
  13.  
  14.     D3D11_BUFFER_DESC buff_desc = {};
  15.     buff_desc.Usage = D3D11_USAGE_DEFAULT;
  16.     buff_desc.ByteWidth = size_vertex * size_list;
  17.     buff_desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
  18.     buff_desc.CPUAccessFlags = 0;
  19.     buff_desc.MiscFlags = 0;
  20.  
  21.     D3D11_SUBRESOURCE_DATA init_data = {};
  22.     init_data.pSysMem = list_vertices;
  23.  
  24.     m_size_vertex = size_vertex;
  25.     m_size_list = size_list;
  26.  
  27.     if (FAILED(GraphicsEngine::get()->m_d3d_device->CreateBuffer(&buff_desc, &init_data, &m_buffer)))
  28.     {
  29.         return false;
  30.     }
  31.    
  32.     D3D11_INPUT_ELEMENT_DESC layout[]=
  33.     {
  34.         //SEMANTIC NAME - SEMANTIC INDEX - FORMAT - INPUT SLOT - ALIGNED BYTE OFFSET - INPUT SLOT CLASS - INSTANCE DATA STEP RATE
  35.         {"POSITION", 0,  DXGI_FORMAT_R32G32B32_FLOAT, 0, 0,D3D11_INPUT_PER_VERTEX_DATA ,0},
  36.         { "COLOR", 0,  DXGI_FORMAT_R32G32B32_FLOAT, 0, 12,D3D11_INPUT_PER_VERTEX_DATA ,0 },
  37.         { "COLOR", 1,  DXGI_FORMAT_R32G32B32_FLOAT, 0, 24,D3D11_INPUT_PER_VERTEX_DATA ,0 }
  38.     };
  39.    
  40.     UINT size_layout = ARRAYSIZE(layout);
  41.  
  42.     if (FAILED(GraphicsEngine::get()->m_d3d_device->CreateInputLayout(layout, size_layout, shader_byte_code, size_byte_shader, &m_layout)))
  43.     {
  44.         return false;
  45.     }
  46.  
  47.     return true;
  48. }
  49.  
  50. UINT VertexBuffer::getSizeVertexList()
  51. {
  52.     return this->m_size_list;
  53. }
  54.  
  55. bool VertexBuffer::release()
  56. {
  57.     m_layout->Release();
  58.     m_buffer->Release();
  59.     delete this;
  60.     return true;
  61. }
  62.  
  63. VertexBuffer::~VertexBuffer()
  64. {
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement