Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Program.cpp
- void Program::Load()
- {
- //Mesh 1
- testMesh->Load2("box.obj");
- //testMesh->Load("grenade.3DS");
- testMesh->textureBuffer = LoadTexture("cube_tex.bmp");
- testMesh->scale = vec3(0.1f);
- testMesh->pivot = vec3(0, 0, 0);
- testMesh->position = vec3(1, 0, 0);
- meshes.push_back(testMesh);
- //Mesh 2
- Mesh *tmpMesh = new Mesh;
- tmpMesh->Load2("asdasdf");
- tmpMesh->textureBuffer = LoadTexture("cube_tex.bmp");
- tmpMesh->scale = vec3(0.1f);
- tmpMesh->pivot = vec3(0, 0, 0);
- tmpMesh->position = vec3(0, 0, 0);
- meshes.push_back(tmpMesh);
- standardShader = LoadShaders("vertex.shader", "fragment.shader");
- quadShader = LoadShaders("quadVertex.shader", "quadFragment.shader");
- }
- void Program::Draw()
- {
- glClearColor(1, 1, 1, 0);
- glUseProgram(standardShader);
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- //Draw meshes to a texture
- for (int i = 0; i < meshes.size(); i++)
- {
- glEnableVertexAttribArray(0);
- glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->vertexBuffer);
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
- glEnableVertexAttribArray(1);
- glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->uvBuffer);
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, NULL);
- glEnableVertexAttribArray(2);
- glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->normalBuffer);
- glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, NULL);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, meshes[i]->textureBuffer);
- glUniform1i(glGetUniformLocation(standardShader, "diffuse"), 0);
- mat4 projection = perspective(1.35f, (float)SCREEN_WIDTH / SCREEN_HEIGHT, 0.1f, 100.f);
- mat4 view = translate(mat4(), vec3(0, -1.3f, -3));
- mat4 MVP = projection * view * meshes[i]->modelMatrix();// * scale(mat4(), vec3(0.1f, 0.1f, 0.1f)) * rotate(mat4(), (float)glfwGetTime(), vec3(0, 1.0f, 0));// scale(mat4(), vec3(0.5f, 0.5f, 0.5f)); //cam->projection;// *cam->view * mat4(1);// * translate(mat4(), vec3(0.0f, 0.0f, 5.0f));// *cam->view * mat4(1.f);
- glUniformMatrix4fv(glGetUniformLocation(standardShader, "MVP"), 1, GL_FALSE, value_ptr(MVP));
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, meshes[i]->indexBuffer);
- //glDrawArrays(GL_TRIANGLES, 0, testMesh->verticesSize / 12);
- glDrawElements(GL_TRIANGLES, meshes[i]->indicesSize, GL_UNSIGNED_INT, NULL);
- }
- testMesh->rotation *= quat(vec3(0, 0.01f, 0));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement