/// Renders the meshi-mesh :3 void Mesh::Render() { assert(vertexBuffer != -1); // LogGraphics("Mesh::Render", EXTENSIVE_DEBUG); Shader * shader = ActiveShader(); // Check for valid buffer before rendering if (graphicsState->BoundVertexArrayBuffer() != vertexBuffer) { assert(floatsPerVertex >= 8 && "Bad float-count per vertices, ne?!"); // Set VBO and render if (logLevel <= DEBUG) CheckGLError("Mesh::Render - before binding stuff"); BindVertexBuffer(); if (logLevel <= DEBUG) CheckGLError("Mesh::Render - binding stuff"); } int numVertices = vertexDataCount; // Render normally int glError = glGetError(); // LogGraphics("Mesh::Render - glDrawArrays pre", DEBUG); glDrawArrays(GL_TRIANGLES, 0, vertexDataCount); // Draw All Of The Triangles At Once // LogGraphics("Mesh::Render - glDrawArrays post", DEBUG); if (logLevel <= DEBUG) CheckGLError("Mesh::Render - glDrawArrays"); }
void* CRenderer::CreateIndexBuffer( CVertexBuffer* pVertexBuffer, const size_t indiceCount, uint const * pIndices /*= NULL*/ ) { SIndexBufferId* pBufferId = new SIndexBufferId(); // Create Vertex Array Object (VAO) glGenVertexArrays( 1, &(pBufferId->vertexArrayId) ); glBindVertexArray( pBufferId->vertexArrayId ); // Bind vertex buffer (VBO) to VAO BindVertexBuffer( pVertexBuffer->GetBufferId(), pVertexBuffer->GetVertexCount(), pVertexBuffer->GetVertexFormat() ); // Create Index buffer glGenBuffers( 1, &(pBufferId->indexBufferId) ); // Bind index buffer to VAO glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, pBufferId->indexBufferId ); glBufferData( GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)(indiceCount * sizeof(uint)), (const GLvoid*)pIndices, GL_STATIC_DRAW ); // Unbind buffers glBindVertexArray( 0 ); glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); glBindBuffer( GL_ARRAY_BUFFER, 0 ); return pBufferId; }
void UtilityShaderDraw::Draw() { BindVertexBuffer(); BindDescriptors(); if (!BindPipeline()) return; vkCmdDraw(m_command_buffer, m_vertex_count, 1, 0, 0); }
void RendererBase::PostRender() { if (pimpl->bound_layout) { pimpl->bound_layout->End(); } BindIndexBuffer(0); BindVertexBuffer(0); BindShaderProgram(0); glFlush(); }