manasij7479

Persp

Jul 30th, 2012
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.07 KB | None | 0 0
  1. #include "program.h"
  2. #include <GL/glew.h>
  3. #include <SFML/Window.hpp>
  4. #include <stdexcept>
  5. #include <iostream>
  6. #include <glm/glm.hpp>
  7. #include <glm/gtc/type_ptr.hpp>
  8. #include <glm/gtc/matrix_transform.hpp>
  9. #include <glm/core/type.hpp>
  10.  
  11. void GlewInit()
  12. {
  13.         GLenum err = glewInit();
  14.         if (GLEW_OK != err)
  15.         {
  16.                 std::cerr<<"Error: "<<glewGetErrorString(err)<<std::endl;
  17.                 throw(std::runtime_error("GLEW_INIT Failure."));
  18.         }
  19. }
  20. int main()
  21. {
  22.     sf::Window win(sf::VideoMode(400,400),"Manasij");
  23.     GlewInit();
  24.     float vertexdata[]={0.0f,0.0f,0.0f,1.0f,1.0f,1.0f,1.0f,0.0f};
  25.     GLubyte indexdata[]={0,1,2,3};
  26.     float colordata[]={0.3f,0.0f,0.5f,1.0f};
  27.     mm::Program program
  28.     (
  29.         {
  30.             mm::Shader(GL_VERTEX_SHADER,"vshader.vert"),
  31.             mm::Shader(GL_FRAGMENT_SHADER,"fshader.frag")
  32.         }
  33.     );
  34.    
  35.     glm::mat4 mvp(1.0);
  36.    
  37.     mvp*=glm::perspective(45.0f,1.0f,0.01f,100.0f);
  38.    
  39.    
  40.     GLuint vao,vbo,ibo;
  41.     glGenVertexArrays(1,&vao);
  42.     glBindVertexArray(vao);
  43.    
  44.     glGenBuffers(1,&vbo);
  45.     glBindBuffer(GL_ARRAY_BUFFER,vbo);
  46.     glBufferData(GL_ARRAY_BUFFER,8*sizeof(GLfloat),vertexdata,GL_STATIC_DRAW);
  47.    
  48.     glGenBuffers(1,&ibo);
  49.     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,ibo);
  50.     glBufferData(GL_ELEMENT_ARRAY_BUFFER,4*sizeof(GLubyte),indexdata,GL_STATIC_DRAW);
  51.    
  52.     glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,0);
  53.     glEnableVertexAttribArray(0);
  54.     glBindAttribLocation(program.getHandle(),0,"pos");
  55.    
  56.    
  57.     glUseProgram(program.getHandle());
  58.     auto loc = glGetUniformLocation(program.getHandle(),"col");
  59.     glUniform4fv(loc,1,colordata);
  60.     loc = glGetUniformLocation(program.getHandle(),"mvp");
  61.     glUniformMatrix4fv(loc,1,GL_FALSE,glm::value_ptr(mvp));
  62.     glUseProgram(0);
  63.    
  64.    
  65.     glClearColor(1.0f,1.0f,1.0f,1.0f);
  66.     glEnable(GL_DEPTH_TEST);
  67.     glDepthFunc(GL_LESS);
  68.     while(win.isOpen())
  69.     {
  70.         glClear(GL_COLOR_BUFFER_BIT);
  71.         glUseProgram(program.getHandle());
  72. //      glDrawArrays(GL_QUADS,0,4);
  73.         glDrawElements(GL_QUADS,4,GL_UNSIGNED_BYTE,nullptr);
  74.         glUseProgram(0);
  75.  
  76.         win.display();
  77.         sf::Event eve;
  78.         while(win.pollEvent(eve))
  79.             if(eve.type==sf::Event::Closed)
  80.                 win.close();
  81.     }
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment