From 766e0cafc5cf2fe191219306c4aac8d60d7e5766 Mon Sep 17 00:00:00 2001 From: dcnieho Date: Thu, 28 Feb 2013 08:53:31 +0000 Subject: [PATCH] implemented GLUT_WINDOW_STENCIL_SIZE and GLUT_WINDOW_BUFFER_SIZE for glutGet git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1529 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/progs/demos/One/one.c | 6 ++++++ freeglut/freeglut/src/mswin/fg_state_mswin.c | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/freeglut/freeglut/progs/demos/One/one.c b/freeglut/freeglut/progs/demos/One/one.c index 6509c3b..e8b08b3 100644 --- a/freeglut/freeglut/progs/demos/One/one.c +++ b/freeglut/freeglut/progs/demos/One/one.c @@ -386,6 +386,12 @@ int main( int argc, char** argv ) glutGet( GLUT_WINDOW_X ), glutGet( GLUT_WINDOW_Y ) ); + /* + * Describe pixel format + */ + printf("The current window has %i red bits, %i green bits, %i blue bits and %i alpha bits for a total buffer size of %i bits\n",glutGet(GLUT_WINDOW_RED_SIZE),glutGet(GLUT_WINDOW_GREEN_SIZE),glutGet(GLUT_WINDOW_BLUE_SIZE),glutGet(GLUT_WINDOW_ALPHA_SIZE),glutGet(GLUT_WINDOW_BUFFER_SIZE)); + printf("It furthermore has %i depth bits and %i stencil bits\n",glutGet(GLUT_WINDOW_DEPTH_SIZE),glutGet(GLUT_WINDOW_STENCIL_SIZE)); + /* * Enter the main FreeGLUT processing loop */ diff --git a/freeglut/freeglut/src/mswin/fg_state_mswin.c b/freeglut/freeglut/src/mswin/fg_state_mswin.c index c4598d4..27a9461 100644 --- a/freeglut/freeglut/src/mswin/fg_state_mswin.c +++ b/freeglut/freeglut/src/mswin/fg_state_mswin.c @@ -141,10 +141,20 @@ int fgPlatformGlutGet ( GLenum eWhat ) return returnValue; case GLUT_WINDOW_BUFFER_SIZE: - returnValue = 1 ; /* TODO????? */ - return returnValue; + { + PIXELFORMATDESCRIPTOR pfd; + HDC hdc = fgStructure.CurrentWindow->Window.pContext.Device; + int iPixelFormat = GetPixelFormat( hdc ); + DescribePixelFormat(hdc, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); + + returnValue = pfd.cColorBits; + if (pfd.iPixelType==PFD_TYPE_RGBA) + returnValue += pfd.cAlphaBits; + + return returnValue; + } case GLUT_WINDOW_STENCIL_SIZE: - returnValue = 0 ; /* TODO????? */ + glGetIntegerv ( GL_STENCIL_BITS, &returnValue ); return returnValue; case GLUT_WINDOW_X: