Jump to content

  • Log In with Google      Sign In   
  • Create Account

[SFML] Can't draw anything in OpenGL


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Rimher   Members   -  Reputation: 132

Like
0Likes
Like

Posted 29 September 2012 - 07:43 AM

Hello there! I've just recently started learning OpenGL, and I'm trying to use SFML as a working environment.
But I'm having my first problems.
I'm following Nehe's tutorial on how to get started in OpenGL, and I was trying to draw some simple shapes. The problem is, they do not appear on the screen! I clearly remember doing this on Windows at the time, but since I switched to Mac, everything seems much harder.

Anyway, here's the code...if anyone can help me, it'd be really appreciated.

[source lang="cpp"]#include <SFML/Graphics.hpp>#include <SFML/Audio.hpp>#include <SFML/Network.hpp>#include <SFML/Window.hpp>#include <SFML/OpenGL.hpp>#include "ResourcePath.hpp"// Include standard headers#include <stdio.h>#include <stdlib.h>using namespace glm;GLfloat rtri, rquad;GLfloat xrot, yrot, zrot;int draw(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f, 0.0f, -6.0f); glRotatef(rtri, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back) glColor3f(1.0f,0.0f,0.0f); // Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Left) glColor3f(0.0f,0.0f,1.0f); // Blue glVertex3f(-1.0f,-1.0f,-1.0f); // Left Of Triangle (Left) glColor3f(0.0f,1.0f,0.0f); // Green glVertex3f(-1.0f,-1.0f, 1.0f); // Right Of Triangle (Left) glEnd(); glLoadIdentity(); glTranslatef(1.5f,0.0f,-7.0f); // Move Right And Into The Screen glRotatef(rquad,1.0f,1.0f,1.0f); // Rotate The Cube On X, Y & Z glBegin(GL_QUADS); glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Top) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Top) glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom Left Of The Quad (Top) glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom Right Of The Quad (Top) glColor3f(1.0f,0.5f,0.0f); // Set The Color To Orange glVertex3f( 1.0f,-1.0f, 1.0f); // Top Right Of The Quad (Bottom) glVertex3f(-1.0f,-1.0f, 1.0f); // Top Left Of The Quad (Bottom) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Bottom) glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Bottom) glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Front) glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Front) glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Front) glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Front) glColor3f(1.0f,1.0f,0.0f); // Set The Color To Yellow glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Back) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Back) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Back) glVertex3f( 1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Back) glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Quad (Left) glVertex3f(-1.0f, 1.0f,-1.0f); // Top Left Of The Quad (Left) glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom Left Of The Quad (Left) glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom Right Of The Quad (Left) glColor3f(1.0f,0.0f,1.0f); // Set The Color To Violet glVertex3f( 1.0f, 1.0f,-1.0f); // Top Right Of The Quad (Right) glVertex3f( 1.0f, 1.0f, 1.0f); // Top Left Of The Quad (Right) glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom Left Of The Quad (Right) glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom Right Of The Quad (Right) glEnd(); // Done Drawing The Quad rtri+=0.2f; // Increase The Rotation Variable For The Triangle rquad-=0.15f; // Decrease The Rotation Variable For The Quad return true;}int initGL(){ glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.3f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); return true;}int main (int argc, const char * argv[]){ sf::Window window(sf::VideoMode(800, 600), "OpenGL window"); initGL(); do { // Process events sf::Event event; while (window.pollEvent(event)) { if(event.type == sf::Event::Resized){ glViewport(0, 0, event.size.width, event.size.height); } // Close window : exit if (event.type == sf::Event::Closed) window.close(); // Escape pressed : exit if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) window.close(); } draw(); // Update the window window.display(); }while(window.isOpen()); return EXIT_SUCCESS;}[/source]

Sponsor:

#2 RulerOfNothing   Members   -  Reputation: 1160

Like
2Likes
Like

Posted 29 September 2012 - 08:20 AM

The tutorial in question has these lines of code:
glMatrixMode(GL_PROJECTION);	  // Select The Projection Matrix
glLoadIdentity();		 // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);	   // Select The Modelview Matrix
glLoadIdentity();		 // Reset The Modelview Matrix
in its window resizing code after the call to glViewport which are missing from your code. Maybe this is causing the problem?

Edited by RulerOfNothing, 29 September 2012 - 08:21 AM.


#3 Rimher   Members   -  Reputation: 132

Like
0Likes
Like

Posted 29 September 2012 - 10:04 AM

The tutorial in question has these lines of code:

glMatrixMode(GL_PROJECTION);	  // Select The Projection Matrix
glLoadIdentity();		 // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);	   // Select The Modelview Matrix
glLoadIdentity();		 // Reset The Modelview Matrix
in its window resizing code after the call to glViewport which are missing from your code. Maybe this is causing the problem?

Such a rookie mistake! Thanks a lot, I had a different perspective in my inizialization!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS