# OpenGL opengl win and linux

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

## Recommended Posts

Hy. I have some little experience in dx 10 . I would start to programming opengl 3. How i can write a portable(win and linux)c++ project? I see that there are some .so in linux and dll in win that are inconpatible(win don't use .so and linux dont use .dll) How i configure a portable project? Thanks

##### Share on other sites
Well i have a project template that i've put together so that all my projects work both in windows and linux. So I can explain the way do it:
Firstly, I use SDL as my windowing manager both in linux and windows (rather than the win32 api stuff).

I do all the windows library references using preprocessor directives and also specify it to use a console subsystem. So my project's main source file contains:
#ifdef _WIN32#	pragma comment(linker, "/SUBSYSTEM:CONSOLE /ENTRY:WinMainCRTStartup")#	pragma comment(lib, "opengl32")#	pragma comment(lib, "glu32")#	pragma comment(lib, "glew32")#	pragma comment(lib, "sdl")#	define WIN32_LEAN_AND_MEAN#	include "windows.h"#endif

In linux, my makefile will handle the compilation and library references with something like:
g++ -o linux_out/myapp -lSDL -lGLEW myapp.cpp

All the code must use functions available in both OS'.. If it's not, then use an ifdef to choose. For example the WinMain signature should be main(..) in linux, so i have:
#ifdef _WIN32int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmd, int nShowCmd){#elseint main(int argc, char *argv[]){#endif

I can't think of anything else that's important right now. It'll take a bit of fiddling, but that should help. By using GLUT or SDL(in my case) one can avoid all the OS specific window/input handling.

good luck

EDIT: As for the shared libraries/dlls, ld in linux should be able to locate any needed shared libraries, but in windows you may wanna keep the dll's in the same directory, or in the system path(though distribution may be harder then).

##### Share on other sites
You can't use glut or glfw?

If you wish to make your own framework (which is quite educative and rewarding in my opinion =)), simply abstract the work needed to be done on both systems. Such as:

open window
render to window
etc ...

Then implement everyting on both platforms. One header, differenct .c (or .cpp) files - this is approach I take.

I also try to keep myself to as much ansi C and iso C++ as possible. Using only one compiler - gcc only, might be of great help, instead of targetting several compilers at once.

As for the tip above, it is correct. But don't ever use WinMain. That is common missunderstanding that every win32 application HAS to start in WinMain. It has not!

It is just a convenience used by microsoft. You can start any win application in standard main. You gain nothing by using winmain. You rather loose on portability and some convenience such as console io, and it is common to see questions on how to "enable" console in windows applications, and unnecessary code like this: http://www.halcyon.com/~ast/dload/guicon.htm.

Check my post here:

http://www.gamedev.net/community/forums/topic.asp?topic_id=544126

There is a tiny little demo that will open a window and prepare it for rendering. It starts in main, but it is very "windowsh".

For some more abstracted thing, check here: www.nextpoint.se/glw.zip where you can see how to abstract some win32 details about window creation and such. I have glx version (linux) working as well, and once I get time to write a few words about it I will post a blog entry and maybe a tutorial on it. But in next 2 or 3 weeks I won't have time to do it.

If you are planning to make it C++, templates and virtual functions are your friends. Interface programming is really great thing when it comes to modelling, abstractions and different implementations of common modell.

Also take a look at glut and glfw source ... or numerous others. Anything you will have to write ia already written :-).

1. 1
2. 2
3. 3
Rutin
22
4. 4
frob
18
5. 5

• 33
• 13
• 10
• 11
• 9
• ### Forum Statistics

• Total Topics
632563
• Total Posts
3007103

×