Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "imgui.h"
- #include "imgui-SFML.h"
- #include <SFML/Graphics.hpp>
- #include <SFML/System/Clock.hpp>
- #include <SFML/Window/Event.hpp>
- #include <SFML/OpenGL.hpp>
- #include <vector>
- #include <iostream>
- #include <GL/glu.h>
- #include <GL/glext.h>
- void showOpenGLWindow();
- sf::RenderTexture renderTexture;
- int angle;
- sf::Clock drawingClock;
- int main(int, char**)
- {
- sf::RenderWindow window(sf::VideoMode(1024, 768), "");
- window.setVerticalSyncEnabled(true);
- ImGui::SFML::Init(window);
- // Setup ImGui binding
- ImGui::CreateContext();
- ImGuiIO& io = ImGui::GetIO(); (void)io;
- io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
- // Setup style
- ImGui::StyleColorsDark();
- io.Fonts->AddFontDefault();
- sf::Color bgColor = ImVec4(0.37f, 0.61f, 0.62f, 1.00f);//some teal color
- window.setTitle("ImgUI OpenGL Test");
- window.resetGLStates(); // call it if you only draw ImGui. Otherwise not needed.
- bool done = false;
- bool demoOpen = true;
- renderTexture.create(300,300);
- renderTexture.setActive(true);
- glEnable(GL_DEPTH_TEST);
- glDepthMask(GL_TRUE);
- glFrontFace(GL_CCW);
- glEnable(GL_CULL_FACE);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity();
- glFrustum (-0.1333, 0.1333, -0.1, 0.1, 0.5, 25.0);
- glViewport(0, 0, 300, 300);
- gluPerspective(90.f, 1.f, .1f, 100.f);
- renderTexture.setActive(false);
- sf::Clock deltaClock;
- while (!done) {
- sf::Event event;
- while (window.pollEvent(event)) {
- ImGui::SFML::ProcessEvent(event);
- if (event.type == sf::Event::Closed ||
- (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Q && event.key.control)
- ) {
- done = true;
- }
- }
- ImGui::SFML::Update(window, deltaClock.restart());
- ImGui::ShowMetricsWindow(&demoOpen);
- showOpenGLWindow();
- window.clear(bgColor); // fill background with color
- ImGui::SFML::Render(window);
- window.display();
- }
- window.close();
- ImGui::SFML::Shutdown();
- return 0;
- }
- void showOpenGLWindow()
- {
- ImGui::SetNextWindowSize(ImVec2(350,350),ImGuiCond_FirstUseEver);
- if(ImGui::Begin("GL"))
- {
- renderTexture.setActive(true);
- renderTexture.clear();
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- // Apply some transformations for the cube
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glPushMatrix();
- glTranslatef(100.f, 100.f, 0.f);
- angle=drawingClock.getElapsedTime().asSeconds();
- glRotatef(angle * 50, 1.f, 0.f, 0.f);
- glRotatef(angle * 80, 0.f, 1.f, 0.f);
- glRotatef(angle * 120, 0.f, 0.f, 1.f);
- float size = 50.f;
- glBegin(GL_QUADS);
- glColor3f(0.0f, 1.0f, 0.0f);
- glNormal3f(0.0f, 1.0f, 0.0f);
- glVertex3f(-size, -size, -size);
- glVertex3f(-size, size, -size);
- glVertex3f( size, size, -size);
- glVertex3f( size, -size, -size);
- glColor3f(0.0f, 1.0f, 0.0f);
- glNormal3f(0.0f, 0.0f, 1.0f);
- glVertex3f(-size, -size, size);
- glVertex3f(-size, size, size);
- glVertex3f( size, size, size);
- glVertex3f( size, -size, size);
- glColor3f(0.0f, 0.0f, 1.0f);
- glNormal3f(1.0f, 0.0f, 0.0f);
- glVertex3f(-size, -size, -size);
- glVertex3f(-size, size, -size);
- glVertex3f(-size, size, size);
- glVertex3f(-size, -size, size);
- glColor3f(0.0f, 0.0f, 0.5f);
- glNormal3f(-1.0f, 0.0f, 0.0f);
- glVertex3f(size, -size, -size);
- glVertex3f(size, size, -size);
- glVertex3f(size, size, size);
- glVertex3f(size, -size, size);
- glColor3f(0.5f, 0.0f, 0.0f);
- glNormal3f(0.0f, -1.0f, 0.0f);
- glVertex3f(-size, -size, size);
- glVertex3f(-size, -size, -size);
- glVertex3f( size, -size, -size);
- glVertex3f( size, -size, size);
- glColor3f(0.0f, 0.5f, 0.0f);
- glNormal3f(0.0f, 0.0f, -1.0f);
- glVertex3f(-size, size, size);
- glVertex3f(-size, size, -size);
- glVertex3f( size, size, -size);
- glVertex3f( size, size, size);
- glEnd();
- glPopMatrix();
- sf::RectangleShape rect(sf::Vector2f(20, 20));
- rect.setFillColor(sf::Color::Cyan);
- renderTexture.draw(rect);
- renderTexture.setActive(false);
- renderTexture.display();
- ImGui::Image(renderTexture.getTexture());
- ImGui::End();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement