D3D8 render state additions
Vitaly Budovski
vbudovsk at cs.rmit.edu.au
Sun Jan 15 04:47:25 CST 2006
Implemented several render states for D3D8.
Changelog
* Implemented D3DRS_EDGEANTIALIAS
* Implemented D3DRS_POINTSPRITEENABLE
* Implemented D3DRS_MULTISAMPLEANTIALIAS
-------------- next part --------------
Index: device.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/device.c,v
retrieving revision 1.133
diff -u -r1.133 device.c
--- device.c 10 Nov 2005 12:14:59 -0000 1.133
+++ device.c 15 Jan 2006 10:29:08 -0000
@@ -3054,6 +3054,21 @@
/* Unhandled yet...! */
case D3DRS_EDGEANTIALIAS :
+ {
+ if(Value) {
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ checkGLcall("glEnable GL_BLEND");
+ glEnable(GL_LINE_SMOOTH);
+ checkGLcall("glEnable Gl_LINE_SMOOTH");
+ } else {
+ glDisable(GL_BLEND);
+ checkGLcall("glDisable GL_BLEND");
+ glDisable(GL_LINE_SMOOTH);
+ checkGLcall("glDisable GL_LINE_SMOOTH");
+ }
+ break;
+ }
case D3DRS_WRAP0 :
case D3DRS_WRAP1 :
case D3DRS_WRAP2 :
@@ -3062,8 +3077,48 @@
case D3DRS_WRAP5 :
case D3DRS_WRAP6 :
case D3DRS_WRAP7 :
+ {
+ FIXME("(%p)->(%d,%ld) not handled yet\n", This, State, Value);
+ break;
+ }
case D3DRS_POINTSPRITEENABLE :
+ {
+ if(Value) {
+ if(GL_SUPPORT(GL_ARB_point_sprite)) {
+ glEnable(GL_POINT_SPRITE_ARB);
+ checkGLcall("glEnable GL_POINT_SPRITE_ARB");
+ } else {
+ TRACE("Point sprites cannot be enabled in this version of opengl\n");
+ }
+ } else {
+ if(GL_SUPPORT(GL_ARB_point_sprite)) {
+ glDisable(GL_POINT_SPRITE_ARB);
+ checkGLcall("glDisable GL_POINT_SPRITE_ARB");
+ } else {
+ TRACE("Point sprites cannot be disabled in this version of opengl\n");
+ }
+ }
+ break;
+ }
case D3DRS_MULTISAMPLEANTIALIAS :
+ {
+ if(Value) {
+ if(GL_SUPPORT(GL_ARB_multisample)) {
+ glEnable(GL_MULTISAMPLE_ARB);
+ checkGLcall("glEnable GL_MULTISAMPLE_ARB");
+ } else {
+ TRACE("Multisample antialiasing cannot be enabled in this version of opengl\n");
+ }
+ } else {
+ if(GL_SUPPORT(GL_ARB_multisample)) {
+ glDisable(GL_MULTISAMPLE_ARB);
+ checkGLcall("glDisable GL_MULTISAMPLE_ARB");
+ } else {
+ TRACE("Multisample antialiasing cannot be disabled in this version of opengl\n");
+ }
+ }
+ break;
+ }
case D3DRS_MULTISAMPLEMASK :
case D3DRS_PATCHEDGESTYLE :
case D3DRS_PATCHSEGMENTS :
More information about the wine-patches
mailing list