Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Xorcist

OpenGL Is OpenGL for me?

This topic is 6289 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I''ve never used OpenGL, but I''ve heard a lot of good things about it. My question is, should I learn it? What are the benefits of it over DirectX? Currently a lot of my programming is done in Delphi. Will that make a difference? Should I be using C to get the most out of OpenGL? My gaming interests are mainly in 2D, but even today many 2D games use a lot of 3D effects and enviroments to enhance their overall appearance. Any advice and or information would be greatly appreciated. P.S. What would be a good book to pick up for a OpenGL newbie like myself.

Share this post


Link to post
Share on other sites
Advertisement
OpenGL''s main advantage over DirectX is its portability. It runs on just about any platform, whereas DirectX is exclusively a Windows grapihcs API.

OpenGL is much easier to learn than DirectX because OGL itself isn''t an object oriented API (though you can write your own wrapper for it).

I think you''ll like it a lot if you give it a try. A good book is the "OpenGL Superbible 2nd Ed."... plus the NeHe tutorials are really good too. Between those two you should be up and running in no time.

Share this post


Link to post
Share on other sites
Two quick questions...

#1 Is it possible to create a totally 2D game using OpenGL? I've done some looking around but everything I come across seems to be 3D. I'm just worried everything is optimized for 3D and the 2D performance might be lacking. On that note, does OpenGL require 3D hardware or will any standard video card work?

#2 Does it work with "windowed" applications or will everything need to be fullscreen. I've done some fullscreen stuff before and I've found it much harder to debug, I like having the option to run a windowed mode if for nothing else than to debug.


P.S. I like the fact OpenGL is portable. It's one of the things I've been looking for. I am seriously considering moving away from Windows and over to Linux. Of course that transition will take time, but better prepared than not.

P.P.S. "OpenGL Superbible 2nd Ed." looks great, it should be just the reference I need. Does anyone know if the "Delphi Developer's Guide to OpenGL" is any good? The Amazon reviews were at best, mixed.


{Thanks again everyone.}

Edited by - Xorcist on July 17, 2001 3:00:35 AM

Share this post


Link to post
Share on other sites
1- Yes you can. OpenGL is not for 3D only but is more used for that. You need OpenGL drivers to use OpenGL.

2- Both works.

If you want to support several platform, have a look @ upcoming OpenML (www.khronos.org using OpenGL) or SDL (libsdl.org).

I suggest you use C or C++ instead of Delphi since delphi is mmmhh.... windows only. (well Linux two now)
But it''s definately not crossplatform.

-* So many things to do, so little time to spend. *-

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Yes, OpenGL works in windowed mode. I remember that if you initialize it by hand, there''s only one flag that you need to set to either make it full screen or windowed. If you use GLUT, i''m not sure.

Share this post


Link to post
Share on other sites
theres a lot of very good opengl sites for delphi out there a couple are
http://delphigl.cfxweb.net/
http://www.delphi3d.net/

http://members.xoom.com/myBollux

Share this post


Link to post
Share on other sites
Syntax speaking, OGL is far simpler to set up.
As for features, I think DX has more features.
I slammed my head against DX for a while, and now am learning OGL. Much simpler.
I dont know how Delphi works, so I cant advise you on that.
However, C++ would probably the way to go.
I like the way C++ works...some people don''t...
I would personally learn OGL in C++, if I were you.
~V''lion


I came, I saw, I got programmers block.
~V''''lion

Share this post


Link to post
Share on other sites
GLUT will do any windowing for you. You can run fullscreen or in a window. If you are in a window, you can switch to fullscreen by calling glutFullscreen(); . GLUT will handle mouse input, keyboard input, or just about any other kind of input. It even has built-in support for spaceballs (little motion-capture type devices... like if you wanted to make a boxing game where you can actually throw punches in real life--as far as I can gather anyway). You can create multiple windows with a couple of lines of code. It will handle menus for you, and overlays, and all kinds of stuff.

Most importantly, it's EASY... it's a good way to learn OpenGL without having to deal with windows in the early stages. Here is a little GLUT "skeleton" prog that just draws a quad.

#include

void RenderScene( void );
void SetupRC( void );
void ChangeSize( GLsizei w, GLsizei h );
void DoKeyboard( unsigned char key_asc, int mX, int mY );
void SpecialKeys(int key, int x, int y);
void Timer(int value);

void main( void )
{
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutCreateWindow("My Open GL Program");
glutFullScreen();

//Callback functions
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutSpecialFunc(SpecialKeys);
glutKeyboardFunc(DoKeyboard);
glutTimerFunc(100, Timer, 1);

SetupRC();
glutMainLoop();
}
//--------------------------------
void SetupRC( void )
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

//--------------------------------
void RenderScene( void )
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glTranslatef(0.0, 0.0, -100.0);
glBegin(GL_QUADS);
glColor3f(1.0, 0.0, 0.0);
glVertex2f( -20.0, 1.0);
glVertex2f( -20.0, -1.0);
glVertex2f( -20.0+x, -1.0);
glVertex2f( -20.0+x, 1.0);

glutSwapBuffers();
}

//-------------------------------------------------------
// Called by GLUT library when the window has changed size
void ChangeSize(GLsizei w, GLsizei h)
{
// Prevent a divide by zero
if(h == 0) h = 1;
if(w == 0) w = 1;
// Set Viewport to window dimensions
glViewport(0, 0, w, h);
// Reset coordinate system
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

if (w <= h)
{ h = h*(h/w); w = w;}
else
{ w = w*(w/h); h = h;}

GLfloat fAspect = (GLfloat)w/(GLfloat)h;
gluPerspective(70.0f, fAspect, 0.1, 500.0f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void Timer( int value )
{
glutPostRedisplay();
glutTimerFunc(100, Timer, 1);

}

void DoKeyboard( unsigned char key_asc, int mX, int mY )
{
glutPostRedisplay();
}

void SpecialKeys(int key, int x, int y)
{
// Refresh the Window
glutPostRedisplay();
}





Edited by - smitty1276 on July 22, 2001 1:07:34 AM

Edited by - smitty1276 on July 22, 2001 1:08:53 AM

Share this post


Link to post
Share on other sites
OpenGL is probably the best 3D API you can find. I was able to write a small engine which loads and renders a Milkshape3D model in just under 1000 lines of code.

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!