Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #define GLEW_STATIC
  2. #include <glew/glew.h>
  3. #include <SFML/Window.hpp>
  4. #include "sparrowrenderer.h"
  5. #include "phongmaterial.h"
  6. #include "skybox.h"
  7. #include "camera.h"
  8. #include "sphere.h"
  9. #include "utils.h"
  10. #include "texture.h"
  11.  
  12. Scene* buildScene(int width, int height)
  13. {
  14.     Scene* scene = new Scene();
  15.     Camera* cam = new Camera(width, height);
  16.     cam->moveTo(glm::vec3(0, 0, 3));
  17.     cam->lookAt(glm::vec2(0, 0));
  18.     scene->setCamera(cam);
  19.     Mesh* myGrid = new Sphere(2);
  20.     myGrid->initGL();
  21.     std::string vertSource = Utils::fileToString("../phong.vert");
  22.     std::string fragSource = Utils::fileToString("../phong.frag");
  23.     Shader* shader = new Shader(vertSource, fragSource);
  24.     PhongMaterial* mat = new PhongMaterial(shader);
  25.     Texture* tex = new Texture("../data/noise.png");
  26.     mat->setTexture(tex);
  27.     std::string filenames[6] = {
  28.         "../data/skybox_ft", "../data/skybox_bk",
  29.         "../data/skybox_up", "../data/skybox_dn",
  30.         "../data/skybox_lf", "../data/skybox_rt"
  31.     };
  32.     SkyBox* skybox = new SkyBox(filenames);
  33.     scene->addEntity(skybox);
  34.     scene->addEntity(myGrid, mat);
  35.     return scene;
  36. }
  37.  
  38. int main()
  39. {
  40.     SparrowRenderer* renderer;
  41.  
  42.     // crée la fenêtre
  43.     sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, sf::ContextSettings(32));
  44.     window.setVerticalSyncEnabled(true);
  45.  
  46.     renderer = new SparrowRenderer(800, 600);
  47.     Scene* scene = buildScene(800, 600);
  48.     renderer->setScene(scene);
  49.  
  50.     // la boucle principale
  51.     bool running = true;
  52.     while (running)
  53.     {
  54.         // gestion des évènements
  55.         sf::Event event;
  56.         while (window.pollEvent(event))
  57.         {
  58.             if (event.type == sf::Event::Closed)
  59.             {
  60.                 // on stoppe le programme
  61.                 running = false;
  62.             }
  63.             else if (event.type == sf::Event::Resized)
  64.             {
  65.                 renderer->resize(event.size.width, event.size.height);
  66.             }
  67.         }
  68.  
  69.         renderer->render();
  70.  
  71.         // termine la trame courante (en interne, échange les deux tampons de rendu)
  72.         window.display();
  73.     }
  74.  
  75.     // libération des ressources...
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement