Advertisement
Guest User

Untitled

a guest
Jul 12th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.00 KB | None | 0 0
  1. #include "imgui.h"
  2. #include "imgui-SFML.h"
  3.  
  4. #include <SFML/Graphics.hpp>
  5. #include <SFML/System/Clock.hpp>
  6. #include <SFML/Window/Event.hpp>
  7. #include <SFML/OpenGL.hpp>
  8. #include <vector>
  9. #include <iostream>
  10.  
  11. #include <GL/glu.h>
  12. #include <GL/glext.h>
  13.  
  14. void showOpenGLWindow();
  15.  
  16. sf::RenderTexture renderTexture;
  17. int angle;
  18. sf::Clock drawingClock;
  19.  
  20. int main(int, char**)
  21. {
  22.     sf::RenderWindow window(sf::VideoMode(1024, 768), "");
  23.     window.setVerticalSyncEnabled(true);
  24.     ImGui::SFML::Init(window);
  25.  
  26.    
  27.     // Setup ImGui binding
  28.     ImGui::CreateContext();
  29.     ImGuiIO& io = ImGui::GetIO(); (void)io;
  30.     io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;  // Enable Keyboard Controls
  31.    
  32.  
  33.     // Setup style
  34.     ImGui::StyleColorsDark();
  35.     io.Fonts->AddFontDefault();
  36.  
  37.     sf::Color bgColor = ImVec4(0.37f, 0.61f, 0.62f, 1.00f);//some teal color
  38.     window.setTitle("ImgUI OpenGL Test");
  39.     window.resetGLStates(); // call it if you only draw ImGui. Otherwise not needed.
  40.    
  41.     bool done = false;
  42.     bool demoOpen = true;
  43.    
  44.      
  45.     renderTexture.create(300,300);
  46.     renderTexture.setActive(true);
  47.  
  48.     glEnable(GL_DEPTH_TEST);
  49.     glDepthMask(GL_TRUE);
  50.     glFrontFace(GL_CCW);
  51.     glEnable(GL_CULL_FACE);
  52.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    
  53.     glMatrixMode (GL_PROJECTION);
  54.      glLoadIdentity();
  55.     glFrustum (-0.1333, 0.1333, -0.1, 0.1, 0.5, 25.0);
  56.    
  57.     glViewport(0, 0, 300, 300);
  58.     gluPerspective(90.f, 1.f, .1f, 100.f);        
  59.    
  60.     renderTexture.setActive(false);
  61.  
  62.     sf::Clock deltaClock;
  63.     while (!done) {
  64.         sf::Event event;
  65.         while (window.pollEvent(event)) {
  66.             ImGui::SFML::ProcessEvent(event);
  67.  
  68.             if (event.type == sf::Event::Closed ||
  69.                 (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Q && event.key.control)
  70.             ) {
  71.                 done = true;
  72.             }
  73.         }
  74.  
  75.         ImGui::SFML::Update(window, deltaClock.restart());
  76.        
  77.         ImGui::ShowMetricsWindow(&demoOpen);
  78.        
  79.         showOpenGLWindow();
  80.  
  81.         window.clear(bgColor); // fill background with color
  82.         ImGui::SFML::Render(window);
  83.         window.display();
  84.     }
  85.  
  86.    
  87.     window.close();
  88.  
  89.     ImGui::SFML::Shutdown();
  90.     return 0;
  91. }
  92.  
  93.  
  94. void showOpenGLWindow()
  95. {
  96.     ImGui::SetNextWindowSize(ImVec2(350,350),ImGuiCond_FirstUseEver);
  97.     if(ImGui::Begin("GL"))
  98.     {
  99.         renderTexture.setActive(true);      
  100.         renderTexture.clear();
  101.        
  102.         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  103.     // Apply some transformations for the cube
  104.         glMatrixMode(GL_MODELVIEW);
  105.         glLoadIdentity();
  106.  
  107.         glPushMatrix();
  108.         glTranslatef(100.f, 100.f, 0.f);
  109.                
  110.         angle=drawingClock.getElapsedTime().asSeconds();
  111.        
  112.         glRotatef(angle * 50, 1.f, 0.f, 0.f);
  113.         glRotatef(angle * 80, 0.f, 1.f, 0.f);
  114.         glRotatef(angle * 120, 0.f, 0.f, 1.f);
  115.  
  116.         float size = 50.f;
  117.         glBegin(GL_QUADS);
  118.             glColor3f(0.0f, 1.0f, 0.0f);
  119.             glNormal3f(0.0f, 1.0f, 0.0f);
  120.             glVertex3f(-size, -size, -size);
  121.             glVertex3f(-size,  size, -size);
  122.             glVertex3f( size,  size, -size);
  123.             glVertex3f( size, -size, -size);
  124.  
  125.             glColor3f(0.0f, 1.0f, 0.0f);
  126.             glNormal3f(0.0f, 0.0f, 1.0f);
  127.             glVertex3f(-size, -size, size);
  128.             glVertex3f(-size,  size, size);
  129.             glVertex3f( size,  size, size);
  130.             glVertex3f( size, -size, size);
  131.  
  132.             glColor3f(0.0f, 0.0f, 1.0f);
  133.             glNormal3f(1.0f, 0.0f, 0.0f);
  134.             glVertex3f(-size, -size, -size);
  135.             glVertex3f(-size,  size, -size);
  136.             glVertex3f(-size,  size,  size);
  137.             glVertex3f(-size, -size,  size);
  138.  
  139.             glColor3f(0.0f, 0.0f, 0.5f);
  140.             glNormal3f(-1.0f, 0.0f, 0.0f);
  141.             glVertex3f(size, -size, -size);
  142.             glVertex3f(size,  size, -size);
  143.             glVertex3f(size,  size,  size);
  144.             glVertex3f(size, -size,  size);
  145.  
  146.             glColor3f(0.5f, 0.0f, 0.0f);
  147.             glNormal3f(0.0f, -1.0f, 0.0f);
  148.             glVertex3f(-size, -size,  size);
  149.             glVertex3f(-size, -size, -size);
  150.             glVertex3f( size, -size, -size);
  151.             glVertex3f( size, -size,  size);
  152.  
  153.             glColor3f(0.0f, 0.5f, 0.0f);
  154.             glNormal3f(0.0f, 0.0f, -1.0f);
  155.             glVertex3f(-size, size,  size);
  156.             glVertex3f(-size, size, -size);
  157.             glVertex3f( size, size, -size);
  158.             glVertex3f( size, size,  size);
  159.         glEnd();
  160.  
  161.         glPopMatrix();
  162.        
  163.         sf::RectangleShape rect(sf::Vector2f(20, 20));
  164.         rect.setFillColor(sf::Color::Cyan);
  165.         renderTexture.draw(rect);
  166.        
  167.         renderTexture.setActive(false);
  168.            
  169.         renderTexture.display();
  170.         ImGui::Image(renderTexture.getTexture());
  171.        
  172.         ImGui::End();
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement