Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Meelo

Pages: [1]
1
Graphics / Overlaying things onto OpenGL
« on: May 26, 2010, 12:46:48 am »
I'm new to SFML, and I've been trying to figure out how to have an interface drawn on top of a 3D image. I can do either individually, fine, but overlaying anything onto OpenGL is beyond me. (Some code that's a fairly simple case of this:
Code: [Select]
#include <SFML/Graphics.hpp>
#include <iostream>

bool setupGL(){
glClearDepth(1.f);
glClearColor(0.f, 0.f, 0.f, 0.f);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.f, 1.f, 1.f, 500.f);
GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f};
GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f};
GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f };
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);
glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
return true;
}

int main()
{
    // Create main window
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML OpenGL", sf::Style::Close);
sf::Shape Polygon;
Polygon.AddPoint(0, -50,  sf::Color(255, 0, 0),     sf::Color(0, 128, 128));
Polygon.AddPoint(50, 0,   sf::Color(255, 85, 85),   sf::Color(0, 128, 128));
Polygon.AddPoint(50, 50,  sf::Color(255, 170, 170), sf::Color(0, 128, 128));
Polygon.AddPoint(0, 100,  sf::Color(255, 255, 255), sf::Color(0, 128, 128));
Polygon.AddPoint(-50, 50, sf::Color(255, 170, 170), sf::Color(0, 128, 128));
Polygon.AddPoint(-50, 0,  sf::Color(255, 85, 85),   sf::Color(0, 128, 128));

App.SetFramerateLimit(60);
sf::Clock timer;
setupGL();
int face = 0;
int window_x = 800;
int window_y = 600;
    while (App.IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();
if (Event.Type == sf::Event::Resized){
glViewport(0, 0, Event.Size.Width, Event.Size.Height);
window_x = Event.Size.Width;
window_y = Event.Size.Height;
}

        }

        //App.Clear();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.f, 0.f, -200.f);
glRotatef(timer.GetElapsedTime() * 50, 1.f, 0.f, 0.f);
glRotatef(timer.GetElapsedTime() * 30, 0.f, 1.f, 0.f);
glRotatef(timer.GetElapsedTime() * 90, 0.f, 0.f, 1.f);
glBegin(GL_QUADS);

    glVertex3f(-50.f, -50.f, -50.f);
    glVertex3f(-50.f,  50.f, -50.f);
    glVertex3f( 50.f,  50.f, -50.f);
    glVertex3f( 50.f, -50.f, -50.f);

glEnd();
App.Draw(Polygon);
        App.Display();
    }

    return EXIT_SUCCESS;
}


What's the best way to do this?

Pages: [1]
anything