Beispiel #1
0
CVertexBuffer CGUIFontTTFDX::CreateVertexBuffer(const std::vector<SVertex> &vertices) const
{
  CD3DBuffer* buffer = nullptr;
  if (!vertices.empty()) // do not create empty buffers, leave buffer as nullptr, it will be ignored on drawing stage
  {
    buffer = new CD3DBuffer();
    if (!buffer->Create(D3D11_BIND_VERTEX_BUFFER, vertices.size(), sizeof(SVertex), DXGI_FORMAT_UNKNOWN, D3D11_USAGE_IMMUTABLE, &vertices[0]))
      CLog::Log(LOGERROR, "%s - Failed to create vertex buffer.", __FUNCTION__);
    else
      AddReference((CGUIFontTTFDX*)this, buffer);
  }

  return CVertexBuffer(reinterpret_cast<void*>(buffer), vertices.size() / 4, this);
}
Beispiel #2
0
CVertexBuffer CGUIFontTTFGL::CreateVertexBuffer(const std::vector<SVertex> &vertices) const
{
  // Generate a unique buffer object name and put it in bufferHandle
  GLuint bufferHandle;
  glGenBuffers(1, &bufferHandle);
  // Bind the buffer to the OpenGL context's GL_ARRAY_BUFFER binding point
  glBindBuffer(GL_ARRAY_BUFFER, bufferHandle);
  // Create a data store for the buffer object bound to the GL_ARRAY_BUFFER
  // binding point (i.e. our buffer object) and initialise it from the
  // specified client-side pointer
  glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof (SVertex), &vertices[0], GL_STATIC_DRAW);
  // Unbind GL_ARRAY_BUFFER
  glBindBuffer(GL_ARRAY_BUFFER, 0);

  return CVertexBuffer((void *) bufferHandle, vertices.size() / 4, this);
}