|
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
|