Esempio n. 1
0
/// 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");
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
void UtilityShaderDraw::Draw()
{
  BindVertexBuffer();
  BindDescriptors();
  if (!BindPipeline())
    return;

  vkCmdDraw(m_command_buffer, m_vertex_count, 1, 0, 0);
}
Esempio n. 4
0
void RendererBase::PostRender()
{
    if (pimpl->bound_layout)
    {
        pimpl->bound_layout->End();
    }
    BindIndexBuffer(0);
    BindVertexBuffer(0);
    BindShaderProgram(0);
    glFlush();
}