From: Andreas R. <and...@us...> - 2002-05-29 11:42:17
|
Update of /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin In directory usw-pr-cvs1:/tmp/cvs-serv9295 Modified Files: B3DAcceleratorPlugin.h sqOpenGLRenderer.c Log Message: Moved property handling from platform to cross code Index: B3DAcceleratorPlugin.h =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** B3DAcceleratorPlugin.h 6 May 2002 11:01:01 -0000 1.2 --- B3DAcceleratorPlugin.h 29 May 2002 11:42:14 -0000 1.3 *************** *** 68,72 **** #warning "**************************************************************" #warning "**************************************************************" ! # define WIN32_PURE_D3D #endif --- 68,72 ---- #warning "**************************************************************" #warning "**************************************************************" ! # define WIN32_PURE_GL #endif *************** *** 107,124 **** #define b3dxSetBufferRect glSetBufferRect ! #define b3dxSetViewport glSetViewport ! #define b3dxClearDepthBuffer glClearDepthBuffer ! #define b3dxClearViewport glClearViewport #define b3dxRenderVertexBuffer glRenderVertexBuffer ! #define b3dxSetTransform glSetTransform ! #define b3dxDisableLights glDisableLights ! #define b3dxLoadLight glLoadLight ! #define b3dxLoadMaterial glLoadMaterial #define b3dxFlushRenderer glFlushRenderer #define b3dxFinishRenderer glFinishRenderer ! #define b3dxSwapRendererBuffers glSwapRendererBuffers #define b3dxGetIntProperty glGetIntProperty #define b3dxSetIntProperty glSetIntProperty ! #define b3dxSetVerboseLevel glSetVerboseLevel #define b3dxSetFog glSetFog #endif --- 107,126 ---- #define b3dxSetBufferRect glSetBufferRect ! #define b3dxSetViewport glSetViewport ! #define b3dxClearDepthBuffer glClearDepthBuffer ! #define b3dxClearViewport glClearViewport #define b3dxRenderVertexBuffer glRenderVertexBuffer ! #define b3dxSetTransform glSetTransform ! #define b3dxDisableLights glDisableLights ! #define b3dxLoadLight glLoadLight ! #define b3dxLoadMaterial glLoadMaterial #define b3dxFlushRenderer glFlushRenderer #define b3dxFinishRenderer glFinishRenderer ! #define b3dxSwapRendererBuffers glSwapRendererBuffers #define b3dxGetIntProperty glGetIntProperty #define b3dxSetIntProperty glSetIntProperty ! #define b3dxGetIntPropertyOS glGetIntPropertyOS ! #define b3dxSetIntPropertyOS glSetIntPropertyOS ! #define b3dxSetVerboseLevel glSetVerboseLevel #define b3dxSetFog glSetFog #endif *************** *** 202,205 **** --- 204,209 ---- int b3dxGetIntProperty(int handle, int prop); int b3dxSetIntProperty(int handle, int prop, int value); + int b3dxGetIntPropertyOS(int handle, int prop); + int b3dxSetIntPropertyOS(int handle, int prop, int value); int b3dxSetVerboseLevel(int level); int b3dxSetFog(int handle, int fogType, double density, double rangeStart, double rangeEnd, int rgba); Index: sqOpenGLRenderer.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Cross/plugins/B3DAcceleratorPlugin/sqOpenGLRenderer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** sqOpenGLRenderer.c 20 Jan 2002 19:21:50 -0000 1.6 --- sqOpenGLRenderer.c 29 May 2002 11:42:15 -0000 1.7 *************** *** 651,654 **** --- 651,780 ---- } + int glGetIntProperty(int handle, int prop) + { + GLint v; + + glRenderer *renderer = glRendererFromHandle(handle); + if(!renderer || !glMakeCurrentRenderer(renderer)) return 0; + + if(prop < 0) return glGetIntPropertyOS(handle, prop); + + switch(prop) { + case 1: /* backface culling */ + if(!glIsEnabled(GL_CULL_FACE)) return 0; + glGetIntegerv(GL_FRONT_FACE, &v); + if(v == GL_CW) return 1; + if(v == GL_CCW) return -1; + return 0; + case 2: /* polygon mode */ + glGetIntegerv(GL_POLYGON_MODE, &v); + ERROR_CHECK; + return v; + case 3: /* point size */ + glGetIntegerv(GL_POINT_SIZE, &v); + ERROR_CHECK; + return v; + case 4: /* line width */ + glGetIntegerv(GL_LINE_WIDTH, &v); + ERROR_CHECK; + return v; + case 5: /* blend enable */ + return glIsEnabled(GL_BLEND); + case 6: /* blend source factor */ + case 7: /* blend dest factor */ + if(prop == 6) + glGetIntegerv(GL_BLEND_SRC, &v); + else + glGetIntegerv(GL_BLEND_DST, &v); + ERROR_CHECK; + switch(v) { + case GL_ZERO: return 0; + case GL_ONE: return 1; + case GL_SRC_COLOR: return 2; + case GL_ONE_MINUS_SRC_COLOR: return 3; + case GL_DST_COLOR: return 4; + case GL_ONE_MINUS_DST_COLOR: return 5; + case GL_SRC_ALPHA: return 6; + case GL_ONE_MINUS_SRC_ALPHA: return 7; + case GL_DST_ALPHA: return 8; + case GL_ONE_MINUS_DST_ALPHA: return 9; + case GL_SRC_ALPHA_SATURATE: return 10; + default: return -1; + } + } + return 0; + } + + int glSetIntProperty(int handle, int prop, int value) + { + glRenderer *renderer = glRendererFromHandle(handle); + if(!renderer || !glMakeCurrentRenderer(renderer)) return 0; + + if(prop < 0) return glSetIntPropertyOS(handle, prop, value); + + switch(prop) { + case 1: /* backface culling */ + if(!value) { + glDisable(GL_CULL_FACE); + ERROR_CHECK; + return 1; + } + glEnable(GL_CULL_FACE); + glFrontFace(value == 1 ? GL_CCW : GL_CW); + ERROR_CHECK; + return 1; + case 2: /* polygon mode */ + if(value == 0) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + else if(value == 1) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + else if(value == 2) glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); + else return 0; + ERROR_CHECK; + return 1; + case 3: /* point size */ + glPointSize(value); + ERROR_CHECK; + return 1; + case 4: /* line width */ + glLineWidth(value); + ERROR_CHECK; + return 1; + case 5: /* blend enable */ + if(value) + glEnable(GL_BLEND); + else + glDisable(GL_BLEND); + ERROR_CHECK; + return 1; + case 6: /* blend source factor */ + case 7: /* blend dest factor */ + { + int factor; + int src, dst; + switch(value) { + case 0: factor = GL_ZERO; break; + case 1: factor = GL_ONE; break; + case 2: factor = GL_SRC_COLOR; break; + case 3: factor = GL_ONE_MINUS_SRC_COLOR; break; + case 4: factor = GL_DST_COLOR; break; + case 5: factor = GL_ONE_MINUS_DST_COLOR; break; + case 6: factor = GL_SRC_ALPHA; break; + case 7: factor = GL_ONE_MINUS_SRC_ALPHA; break; + case 8: factor = GL_DST_ALPHA; break; + case 9: factor = GL_ONE_MINUS_DST_ALPHA; break; + case 10: factor = GL_SRC_ALPHA_SATURATE; break; + default: return 0; + } + glGetIntegerv(GL_BLEND_SRC, &src); + glGetIntegerv(GL_BLEND_DST, &dst); + if(prop == 6) src = factor; + else dst = factor; + glBlendFunc(src,dst); + ERROR_CHECK; + return 1; + } + } + return 0; + } + #ifndef GL_VERSION_1_1 |