Module: wine Branch: master Commit: a3854be0b3e2e7a1f863b5db42d7b4287f5eede7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3854be0b3e2e7a1f863b5db42...
Author: Stefan Dösinger stefandoesinger@gmx.at Date: Sun Jun 17 00:26:17 2007 +0200
wined3d: Some point sprite fixes.
---
dlls/wined3d/context.c | 10 ++++++++-- dlls/wined3d/state.c | 26 ++++---------------------- 2 files changed, 12 insertions(+), 24 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 5570225..60830dc 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -206,6 +206,7 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar GLXFBConfig *cfgs = NULL; GLXContext ctx = NULL, oldCtx; WineD3DContext *ret = NULL; + int s;
TRACE("(%p): Creating a %s context for render target %p\n", This, win ? "onscreen" : "offscreen", target);
@@ -368,8 +369,6 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar checkGLcall("glEnable(GL_WEIGHT_SUM_UNITY_ARB)"); } if(GL_SUPPORT(NV_TEXTURE_SHADER2)) { - int s; - glEnable(GL_TEXTURE_SHADER_NV); checkGLcall("glEnable(GL_TEXTURE_SHADER_NV)");
@@ -382,6 +381,13 @@ WineD3DContext *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceImpl *tar checkGLcall("glTexEnvi(GL_TEXTURE_SHADER_NV, GL_PREVIOUS_TEXTURE_INPUT_NV, ...\n"); } } + if(GL_SUPPORT(ARB_POINT_SPRITE)) { + for(s = 0; s < GL_LIMITS(textures); s++) { + GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + s)); + glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE); + checkGLcall("glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)\n"); + } + }
if(oldDrawable && oldCtx) { glXMakeCurrent(display, oldDrawable, oldCtx); diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 2a5f67e..e91441a 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -1315,9 +1315,6 @@ static void state_lastpixel(DWORD state, IWineD3DStateBlockImpl *stateblock, Win }
static void state_pointsprite(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) { - unsigned int i; - int val; - /* TODO: NV_POINT_SPRITE */ if (!GL_SUPPORT(ARB_POINT_SPRITE)) { TRACE("Point sprites not supported\n"); @@ -1325,26 +1322,11 @@ static void state_pointsprite(DWORD state, IWineD3DStateBlockImpl *stateblock, W }
if (stateblock->renderState[WINED3DRS_POINTSPRITEENABLE]) { - val = GL_TRUE; + glEnable(GL_POINT_SPRITE_ARB); + checkGLcall("glEnable(GL_POINT_SPRITE_ARB)\n"); } else { - val = GL_FALSE; - } - - for (i = 0; i < GL_LIMITS(textures); i++) { - /* Note the WINED3DRS value applies to all textures, but GL has one - * per texture, so apply it now ready to be used! - */ - if (GL_SUPPORT(ARB_MULTITEXTURE)) { - GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i)); - checkGLcall("glActiveTextureARB"); - } else if (i==1) { - FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n"); - break; - } - - glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, val); - checkGLcall((val?"glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE)": - "glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_FALSE)")); + glDisable(GL_POINT_SPRITE_ARB); + checkGLcall("glDisable(GL_POINT_SPRITE_ARB)\n"); } }