//
// This code was created by Jeff Molofee '99 (ported to Linux/GLUT by Richard Campbell '99)
//
// If you've found this code useful, please let me know.
//
// Visit me at www.demonews.com/hosted/nehe
// (email Richard Campbell at ulmont@bellsouth.net)
//
#include <GL/glut.h> // Header File For The GLUT Library
#include <GL/gl.h> // Header File For The OpenGL32 Library
#include <GL/glu.h> // Header File For The GLu32 Library
#include <unistd.h> // Header file for sleeping.
/* ascii code for the escape key */
#define ESCAPE 27
/* The number of our GLUT window */
int window;
/* A general OpenGL initialization function. Sets all of the initial parameters. */
void InitGL(int Width, int Height) // We call this right after our OpenGL window is created.
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black
glClearDepth(1.0); // Enables Clearing Of The Depth Buffer
glDepthFunc(GL_LESS); // The Type Of Depth Test To Do
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // Reset The Projection Matrix
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window
glMatrixMode(GL_MODELVIEW);
}
/* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */
void ReSizeGLScene(int Width, int Height)
{
if (Height==0) // Prevent A Divide By Zero If The Window Is Too Small
Height=1;
glViewport(0, 0, Width, Height); // Reset The Current Viewport And Perspective Transformation
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
}
/* The main drawing function. */
void DrawGLScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
// since this is double buffered, swap the buffers to display what just got drawn.
glutSwapBuffers();
}
/* The function called whenever a key is pressed. */
void keyPressed(unsigned char key, int x, int y)
{
/* avoid thrashing this procedure */
usleep(100);
/* If escape is pressed, kill everything. */
if (key == ESCAPE)
{
/* shut down our window */
glutDestroyWindow(window);
/* exit the program...normal termination. */
exit(0);
}
}
int main(int argc, char **argv)
{
/* Initialize GLUT state - glut will take any command line arguments that pertain to it or
X Windows - look at its documentation at http://reality.sgi.com/mjk/spec3/spec3.html */
glutInit(&argc, argv);
/* Select type of Display mode:
Double buffer
RGBA color
Alpha components supported
Depth buffer */
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH);
/* get a 640 x 480 window */
glutInitWindowSize(640, 480);
/* the window starts at the upper left corner of the screen */
glutInitWindowPosition(0, 0);
/* Open a window */
window = glutCreateWindow("Jeff Molofee's GL Code Tutorial ... NeHe '99");
/* Register the function to do all our OpenGL drawing. */
glutDisplayFunc(&DrawGLScene);
/* Go fullscreen. This is as soon as possible. */
glutFullScreen();
/* Even if there are no events, redraw our gl scene. */
glutIdleFunc(&DrawGLScene);
/* Register the function called when our window is resized. */
glutReshapeFunc(&ReSizeGLScene);
/* Register the function called when the keyboard is pressed. */
glutKeyboardFunc(&keyPressed);
/* Initialize our window. */
InitGL(640, 480);
/* Start Event Processing Engine */
glutMainLoop();
return 1;
}
It seems to be giving me an error:
main.cpp:91: error: `exit' undeclared (first use this function)
main.cpp:91: error: (Each undeclared identifier is reported only once for each function it appears in.)
Also...
I am just trying to get a window to put some text and graphics in...I was wondering how I would do that. Maybe make a text file for the window to refer to? Or could I just add the code (text game)?
thanks and thank you to the authors of the code
[edited by - HTML on November 18, 2003 9:17:30 PM]
simple nehe tutorial question on making a window in linux
quote:
Original post by HTML
It seems to be giving me an error:
main.cpp:91: error: `exit'' undeclared (first use this function)
#include <stdlib.h>
hmm, I did that but then I get
undefined reference to...something errors
ex:undefined reference to ''glutinit''
Any suggestions?
undefined reference to...something errors
ex:undefined reference to ''glutinit''
Any suggestions?
You mightwant to take a look at some of the glut stuff. According to the glut stuff I''ve found ... you should only include - the rest is taken care of for you.
Also, you''ll want a program something like this:
~$ cat bin/compc
#!/bin/sh
c++ $1.C -lglut -lGLU -lGL -o $1
Note that you have to include the libraries -lglut -lGLU -lGL...
the -l flag links the libraries in.
On *nix systems, capitalization is important.
I myself recently began working with opengl, and this is the information I found handy.
Also, you might want to download the redbook problems from SGI. Also, there''s some nice sample programs from SGI. (Seeing as how SGI made opengl, this isn''t such a bad idea!)
Scout
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
Also, you''ll want a program something like this:
~$ cat bin/compc
#!/bin/sh
c++ $1.C -lglut -lGLU -lGL -o $1
Note that you have to include the libraries -lglut -lGLU -lGL...
the -l flag links the libraries in.
On *nix systems, capitalization is important.
I myself recently began working with opengl, and this is the information I found handy.
Also, you might want to download the redbook problems from SGI. Also, there''s some nice sample programs from SGI. (Seeing as how SGI made opengl, this isn''t such a bad idea!)
Scout
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
All polynomials are funny - some to a higher degree.Furthermore, polynomials of degree zero are constantly funny.
And now I realize that the angle braces are not allowed. only include GL/glut.h
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
All polynomials are funny - some to a higher degree.Furthermore, polynomials of degree zero are constantly funny.
I am kind of confused by that, also I am using an IDE for the code so I am not sure how to go about this.
But thanks for the input on doing it in glut
I am sure there is some way to just fix the code, but I have no idea how to since I am just starting OpenGL...
anyone happen to know how to modify the code to work in an IDE on linux ?
or just fix the undefined errors I am getting...
Thanks
[edited by - html on November 20, 2003 1:05:56 AM]
But thanks for the input on doing it in glut
I am sure there is some way to just fix the code, but I have no idea how to since I am just starting OpenGL...
anyone happen to know how to modify the code to work in an IDE on linux ?
or just fix the undefined errors I am getting...
Thanks
[edited by - html on November 20, 2003 1:05:56 AM]
try add this line after the include statements
using namespace std;
all standard C++ stuff is declared in namespace std, cout and cin for example.
also if you are using C++, to include c header files you should use the new (relatively) convention as so:
#include <cstdlib>
using namespace std;
all standard C++ stuff is declared in namespace std, cout and cin for example.
also if you are using C++, to include c header files you should use the new (relatively) convention as so:
#include <cstdlib>
Just because it is not nice, doesn''t mean it is not miraculous.
Keep looking, there are more samples from nehe which use the SDL library wich is easier to code with and portable!
[size="2"]I like the Walrus best.
Ok. Downloading the GLUT tutorials from *THIS WEBSITE* work. The only thing that is wrong with them is that you *MUST* edit them to have include GL/glut.h instead of gl/glut.h.
If you want to compile these programs, you must link them against libraries. That''s how linux works. that''s why I was telling you...
LINK them against libglut, libGL, and libGLU.
If you''re using an IDE to do this.. then try casting around for linking options. Also, another problem may be that you don''t have gl or glut installed. :-x.
check to see if you have the libraries installed by:
ld -lglut
ld -lGL
ld -lGLU
If it complains that it can''t find the libs - you don''t have them installed. ...
One more thing
The code is fine.
There''s nothing wrong with it. Link against the proper libraries.
You can''t fix code that isn''t broken.
;-)
Scout (And I will say it again.. link against the libraries!)
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
If you want to compile these programs, you must link them against libraries. That''s how linux works. that''s why I was telling you...
LINK them against libglut, libGL, and libGLU.
If you''re using an IDE to do this.. then try casting around for linking options. Also, another problem may be that you don''t have gl or glut installed. :-x.
check to see if you have the libraries installed by:
ld -lglut
ld -lGL
ld -lGLU
If it complains that it can''t find the libs - you don''t have them installed. ...
One more thing
The code is fine.
There''s nothing wrong with it. Link against the proper libraries.
You can''t fix code that isn''t broken.
;-)
Scout (And I will say it again.. link against the libraries!)
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
All polynomials are funny - some to a higher degree.Furthermore, polynomials of degree zero are constantly funny.
quote:
Original post by MrScout
Ok. Downloading the GLUT tutorials from *THIS WEBSITE* work. The only thing that is wrong with them is that you *MUST* edit them to have include GL/glut.h instead of gl/glut.h.
If you want to compile these programs, you must link them against libraries. That''s how linux works. that''s why I was telling you...
LINK them against libglut, libGL, and libGLU.
If you''re using an IDE to do this.. then try casting around for linking options. Also, another problem may be that you don''t have gl or glut installed. :-x.
check to see if you have the libraries installed by:
ld -lglut
ld -lGL
ld -lGLU
If it complains that it can''t find the libs - you don''t have them installed. ...
One more thing
The code is fine.
There''s nothing wrong with it. Link against the proper libraries.
You can''t fix code that isn''t broken.
;-)
Scout (And I will say it again.. link against the libraries!)
All polynomials are funny - some to a higher degree.
Furthermore, polynomials of degree zero are constantly funny.
I don''t understand how you would link the libraries in IDE..would you possibly be able to give me a quick example?
Thanks!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement