Jump to content

  • Log In with Google      Sign In   
  • Create Account

Is OpenGL for me?


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
13 replies to this topic

#1 Xorcist   Members   -  Reputation: 122

Like
Likes
Like

Posted 16 July 2001 - 04:30 PM

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.

Sponsor:

#2 smitty1276   Members   -  Reputation: 560

Like
Likes
Like

Posted 16 July 2001 - 05:17 PM

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.


#3 Xorcist   Members   -  Reputation: 122

Like
Likes
Like

Posted 16 July 2001 - 07:57 PM

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

#4 Ingenu   Members   -  Reputation: 891

Like
Likes
Like

Posted 16 July 2001 - 09:51 PM

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. *-


#5 mittens   Moderators   -  Reputation: 1315

Like
Likes
Like

Posted 17 July 2001 - 09:55 AM

If you know enough about OpenGL, you can do whatever your mind allows you to do... Plain
and simple... It just takes some work to get to that level.

------------------------------
Trent (ShiningKnight)
E-mail me
OpenGL Game Programming Tutorials

#6 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 17 July 2001 - 10:08 AM

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.

#7 zedzeek   Members   -  Reputation: 528

Like
Likes
Like

Posted 17 July 2001 - 11:50 AM

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

#8 Vlion   Members   -  Reputation: 151

Like
Likes
Like

Posted 21 July 2001 - 05:32 PM

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

#9 smitty1276   Members   -  Reputation: 560

Like
Likes
Like

Posted 21 July 2001 - 06:03 PM

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

#10 nop   Members   -  Reputation: 122

Like
Likes
Like

Posted 29 July 2001 - 09:23 AM

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.

#11 Sqwiddly   Members   -  Reputation: 122

Like
Likes
Like

Posted 29 July 2001 - 05:45 PM

I agree with nop, OpenGL is also one of the easiest API''s to start out with. The hardest part is probably setting up the window (in Win32) but with GLUT even that is a snap! After about a week of reading NeHe''s tutorials I was able to throw together a simple terrain demo.

#12 merlin9x9   Members   -  Reputation: 174

Like
Likes
Like

Posted 29 July 2001 - 05:55 PM

I'm compelled to again point out this distinction: OpenGL is a single 3D API, and DirectX is a collection of APIs for different things. The DirectX analog to OpenGL is Direct3D. The DirectX analog to the OpenGL Utility Library (GLU) is Direct3DX.

Interestingly, at the level of the 3D API, there is no distinction between a windowed and full-screen app. In both cases, you're drawing to a frame buffer in a window. The only difference is that in full-screen apps, that window's client area happens to be the same size as the current display mode. So, the difference is only experienced at the level of whatever controls the frame buffer. In the case of DirectX, that's DirectDraw, while in the case of OpenGL, that's handled by the Win32 API.

The main advantage of OpenGL (not to mention the wonderful extensions mechanism) is that its implementation requires conformance to a number of specifications to the best of the platform's abilities, and you—the programmer—doesn't have to worry about the details of how the features are actually implemented. This guarantees a more consistent level of behavior with the same code across different systems and platforms than most other APIs.


Edited by - merlin9x9 on July 30, 2001 1:01:20 AM

#13 Timothy M   Members   -  Reputation: 122

Like
Likes
Like

Posted 29 July 2001 - 06:04 PM

OpenGL is very easy, at a rudimentary level. Advanced features that haven''t been implemented in to OpenGL as of yet require extensions, which I consider to be less clean. (This is obviously debatable, based on developer experiences) However, in my opinion, OpenGL is, for the most part, the better API. Good luck with OpenGL!

P.S. - I would also take Ingenu''s advise if I were you, and make the switch to C or C++. Non-portable languages are eevviill. (Besides, I think most libraries for Linux are C or C++-only anyway)

#14 merlin9x9   Members   -  Reputation: 174

Like
Likes
Like

Posted 30 July 2001 - 11:46 AM

The nice thing about OpenGL''s extensions mechanism is that it allows you to use new features now. With Direct3D, you have to wait for Microsoft to add them to the API.




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