Is there a way to get the current screen width and height without passing lots of parameters to a class ?
ive seen BOOL GetClientRect( HWND hWnd,LPRECT lpRect );
but this itself need the window handle, i know there is also wglGetCurrentDC() would there be a windows handle equivalent ?
If you are using win32 you might as well use the window handle, you have it tucked away somewhere in your code anyway, but if that is not good enough, why don’t you just save the width and height yourself in two variables, you have to set the glViewPort when the window changes size anyway, put the code in there.
// use instead of DEVMODE, works much faster
hDC = GetDC (0)
width = GetDeviceCaps (hDC, HORZRES)
height = GetDeviceCaps (hDC, VERTRES)
ReleaseDC (0, hDC)
....Call create Window function ()
Also, you might want to consider having the Device Context, hDC, refrenced in the Global Scope so that it’s available to which ever function that needs it in all of the APP.
It’s faster because you’re not changing the resolution, just using the current one…No need to change it back at App exit, either. But, make sure you give the user back the cursor, though.
On Mac OS X you can use Display Manager functions (if I remember correctly) to ascertain the current resolution and depth, and also to list all the possible choices…
That’s not to say that that’s the only way of doing it, though.
There are several APIs used to acquire a pixel format and create a context, such as CGL, AGL, GLUT, and perhaps others. AGL in particular will let you capture the screen for fullscreen use without having to touch the display manager functions, provided the resolution and refresh rates you specify are supported, and will then put everything back the way it was before you captured the display…
Mikael, in my post you’ll see that I already know how to do it in Windows, but I was hoping some Mac or Linux gurus would be able to give me a quick few lines of code to accmplish the same.
Anyway, I’m using a programming environment called BlitzMax, which is an advanced OOP C\Basic hybrid that supports MacOS, Linux and Windows with choice of 2 or 3 main gfx drivers (depending on what your platform supports):
Windows: Full native OpenGL command set, Max2D (OpenGL under the hood), Max2D (DirectX under the hood)
Linux: Full native OpenGL command set (SDL is in the works), Max2D (OpenGL under the hood)
MacOS (Gx and Intel): Full native OpenGL command set, Max2D (OpenGL under the hood)
Max2D command set is fully cross-platform compatible (same code compiles on all three platforms without changes) and OpenGL 1.5 is supported on all three platforms as well (fully, as far as I know).
Anyway, I just need this one feature which is not yet supported (screen depth of the desktop). Can someone help me out?
For $80(US) you can’t beat it! GUI module is $25 more if you want/need it (Windowed Apps on all three platforms with same code). Demo is also available (with MaxGUI included). Updates are free and reasonably frequent.