Stefan Dösinger : wined3d: Some point sprite fixes.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jun 26 07:11:43 CDT 2007
Module: wine
Branch: master
Commit: a3854be0b3e2e7a1f863b5db42d7b4287f5eede7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3854be0b3e2e7a1f863b5db42d7b4287f5eede7
Author: Stefan Dösinger <stefandoesinger at 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");
}
}
More information about the wine-cvs
mailing list