Skip to content

Instantly share code, notes, and snippets.

@terryjsmith
Created September 28, 2014 20:30
Show Gist options
  • Save terryjsmith/566ff727246ef63f95b4 to your computer and use it in GitHub Desktop.
Save terryjsmith/566ff727246ef63f95b4 to your computer and use it in GitHub Desktop.
Evolution 1.1 Main Loop
int main(int argc, char** argv) {
/* INITIALIZATION */
g_renderSystem = new RenderSystem();
g_renderSystem->Initialize();
g_renderSystem->CreateWindow(800, 600, "Evolution", false);
/* START CODE TO CREATE TRIANGLE - THIS WILL HAPPEN IN A LOADER LATER */
// Let's create our first renderable entity
Entity* entity = new Entity();
Renderable* renderable = new Renderable();
entity->AddComponent(renderable);
// Load the simple colour shader
ShaderLoader* loader = ShaderLoader::GetInstance();
renderable->program = loader->Load("resources/shaders/simple_colour");
// Create a vertex attribute object to store our buffers, attributes, data pointers, etc.
glGenVertexArrays(1, &renderable->vertexAttribObject);
glBindVertexArray(renderable->vertexAttribObject);
// Populate our vertex buffer
glGenBuffers(1, &renderable->vertexBuffer);
float vertices[] = {
0.0f, 0.5f, -1.0f, 1.0f, 0.0f, 0.0f,
-0.5f, -0.5f, -1.0f, 0.0f, 1.0f, 0.0f,
0.5f, -0.5f, -1.0f, 0.0f, 0.0f, 1.0f
};
glBindBuffer(GL_ARRAY_BUFFER, renderable->vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 18, vertices, GL_STATIC_DRAW);
// Set up our vertex description
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)(sizeof(float) * 3));
// Save the number of triangles
renderable->numTriangles = 1;
glBindVertexArray(0);
// Add our triangle to the render system
g_renderSystem->AddComponent(renderable);
/* END MANUAL TRIANGLE CODE */
/* MAIN LOOP */
while(!glfwWindowShouldClose(g_renderSystem->GetWindow())) {
// Update our render system
g_renderSystem->Update(0);
// Poll for and process events
glfwPollEvents();
usleep(1);
}
/* SHUT DOWN */
g_renderSystem->Shutdown();
return(0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment