Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. //Program.cpp
  2. void Program::Load()
  3. {
  4.     //Mesh 1
  5.     testMesh->Load2("box.obj");
  6.     //testMesh->Load("grenade.3DS");
  7.     testMesh->textureBuffer = LoadTexture("cube_tex.bmp");
  8.     testMesh->scale = vec3(0.1f);
  9.     testMesh->pivot = vec3(0, 0, 0);
  10.     testMesh->position = vec3(1, 0, 0);
  11.     meshes.push_back(testMesh);
  12.    
  13.  
  14.     //Mesh 2
  15.     Mesh *tmpMesh = new Mesh;
  16.     tmpMesh->Load2("asdasdf");
  17.     tmpMesh->textureBuffer = LoadTexture("cube_tex.bmp");
  18.     tmpMesh->scale = vec3(0.1f);
  19.     tmpMesh->pivot = vec3(0, 0, 0);
  20.     tmpMesh->position = vec3(0, 0, 0);
  21.     meshes.push_back(tmpMesh); 
  22.  
  23.     standardShader = LoadShaders("vertex.shader", "fragment.shader");  
  24.     quadShader = LoadShaders("quadVertex.shader", "quadFragment.shader");
  25. }
  26.  
  27. void Program::Draw()
  28. {
  29.     glClearColor(1, 1, 1, 0);
  30.     glUseProgram(standardShader);
  31.  
  32.     glBindFramebuffer(GL_FRAMEBUFFER, 0);
  33.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  34.  
  35.     //Draw meshes to a texture
  36.     for (int i = 0; i < meshes.size(); i++)
  37.     {
  38.         glEnableVertexAttribArray(0);
  39.         glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->vertexBuffer);
  40.         glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
  41.  
  42.         glEnableVertexAttribArray(1);
  43.         glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->uvBuffer);
  44.         glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, NULL);
  45.  
  46.         glEnableVertexAttribArray(2);
  47.         glBindBuffer(GL_ARRAY_BUFFER, meshes[i]->normalBuffer);
  48.         glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, NULL);
  49.  
  50.         glActiveTexture(GL_TEXTURE0);
  51.         glBindTexture(GL_TEXTURE_2D, meshes[i]->textureBuffer);
  52.         glUniform1i(glGetUniformLocation(standardShader, "diffuse"), 0);
  53.  
  54.         mat4 projection = perspective(1.35f, (float)SCREEN_WIDTH / SCREEN_HEIGHT, 0.1f, 100.f);
  55.         mat4 view = translate(mat4(), vec3(0, -1.3f, -3));
  56.  
  57.        
  58.         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);
  59.         glUniformMatrix4fv(glGetUniformLocation(standardShader, "MVP"), 1, GL_FALSE, value_ptr(MVP));
  60.  
  61.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, meshes[i]->indexBuffer);
  62.         //glDrawArrays(GL_TRIANGLES, 0, testMesh->verticesSize / 12);
  63.         glDrawElements(GL_TRIANGLES, meshes[i]->indicesSize, GL_UNSIGNED_INT, NULL);
  64.     }
  65.     testMesh->rotation *= quat(vec3(0, 0.01f, 0));
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement