• Advertisement

Archived

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

Compiling and running under Windows and Linux

This topic is 5157 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''m making a cross-platform application that must both compile and run under windows and linux. In the Linux version, of course I can''t include "windows.h". How do you setup OpenGL on Linux? I thought this was a trivial problem but I went to do it and realized I wasn''t sure how. Thanks a lot for the help!

Share this post


Link to post
Share on other sites
Advertisement
I'm working on a project mainly in linux, although it's pretty platform independent. I use SDL for the input handling and window creation because it allows my code to be much more platform independent (the SDL library does the platform-specific stuff). Check it out, at least.

To deal with the windows.h issue, when I need the windows version to include it, I just do something like:

#ifdef WIN_32 // I think WIN_32 is right, not WIN32, not sure...
#include <windows.h>
#endif
//Rest of includes here

Not really pretty pretty, but it works. With SDL, that's almost the only situation I need to do and #ifdef's. I do some windows specific stuff to load extensions, since my linux library is opengl 1.4.

[edit]re-Fixed link, sorry again.[/edit]

[edited by - Mr Grinch on January 12, 2004 3:32:23 PM]

[edited by - Mr Grinch on January 13, 2004 2:50:31 AM]

Share this post


Link to post
Share on other sites
You will probably want to look into using SDL, or Simple DirectMedia Layer. It provides a simple means for initializing an OpenGL window that is cross-platform and easy to use. Or, you could use GLUT, though I personally do not like it.

Creating an OpenGL window for Linux (or, more specifically, XFree86) in the general (non-SDL case) involves the use of the GLX extension to OpenGL, as well as some XLib stuff that gets pretty ugly. You can check out GLX documentation for examples on using GLX/XLib to open a window, but using SDL is simpler and allows you to create an application that can be built for Linux and Windows both (as well as a number of other platforms).

Josh
vertexnormal AT linuxmail DOT org


Check out Golem: Lands of Shadow, an isometrically rendered hack-and-slash inspired equally by Nethack and Diablo.

Share this post


Link to post
Share on other sites
quote:
Original post by Mr Grinch

#ifdef WIN_32 // I think WIN_32 is right, not WIN32, not sure...
#include <windows.h>
#endif
//Rest of includes here




No, the VC++ 2003 macro is _WIN32.



Share this post


Link to post
Share on other sites
Ah, cool, that''s exactly what I was looking for. Thanks! I knew that I was going to have to get into the XLib stuff, just wasn''t sure where to begin..

Share this post


Link to post
Share on other sites
There always GLUT as well... but you may as well use SDL... the GLUT leaves a lot to be desired with input, etc., and doesn''t handle sound. It''s incredibly simple though.

Share this post


Link to post
Share on other sites
Holy cow, is SDL really something that I can use without problems? I just got the libraries and called an init function or two and there pops up my screen... I guess I''m used to the hundred lines of code that is required to set up a screen and initialize in C++... is it feasible to use SDL to setup my opengl screen and use it with input too? I won''t find any problems with it down the road will I?

Share this post


Link to post
Share on other sites
Shouldn''t have too many problems. SDL was begun specifically for the purpose of providing a framework for porting games to Linux by the Loki Games crew, so they designed with games in mind. SDL provides input and event handling, joystick handling, graphics, etc... You can even get a basic sound system up and running with SDL_mixer, though I would personally recommend going with OpenAL for that particular task, for greater power.

I use SDL in all of my projects, and I haven''t run into any problems yet.


Josh
vertexnormal AT linuxmail DOT org


Check out Golem: Lands of Shadow, an isometrically rendered hack-and-slash inspired equally by Nethack and Diablo.

Share this post


Link to post
Share on other sites
I haven''t found any problems so far, and I''m using it to do input, window management, and even using SDL_image for image loading. I really like it. I''m even planning on using SDL libraries for sound and networking (eventually). I''d still consider my project to be pretty young, but it has been used in some commercial linux ports (the SDL webpage uses Civilization: Call To Power as an example).

Share this post


Link to post
Share on other sites
Very cool.. then I have one last question. How far do I have to integrate it with my program? Do I *have* to flip the buffers with SDL and not glSwapBuffers now? I set up my window with SDL but any drawing with OpenGL does not work.

Share this post


Link to post
Share on other sites
quote:
Original post by okonomiyaki
Very cool.. then I have one last question. How far do I have to integrate it with my program? Do I *have* to flip the buffers with SDL and not glSwapBuffers now? I set up my window with SDL but any drawing with OpenGL does not work.


Yes. If you create an OpenGL window with SDL, you must call SDL_GL_SwapBuffers() to flip. I would recommend encapsulating it into an inlined Flip() routine, perhaps with conditional compilation if you plan on supporting non-SDL builds.

Josh
vertexnormal AT linuxmail DOT org


Check out Golem: Lands of Shadow, an isometrically rendered hack-and-slash inspired equally by Nethack and Diablo.

Share this post


Link to post
Share on other sites
The guys at Loki also help to write a book on how to program games for linux using SDL, OpenGL, OpenAl, and some other cool stuff. The book is really well written and they put it online for people to use. Check it out here:

entire book

cheers,

Bob




----------------------------------
Halfway down the trail to hell...

Share this post


Link to post
Share on other sites

  • Advertisement