--- a/src/stdlib/SDL_string.c Wed Jul 19 04:24:41 2006 +0000
+++ b/src/stdlib/SDL_string.c Wed Jul 19 05:03:21 2006 +0000
@@ -750,6 +750,8 @@
++str1;
++str2;
}
+ a = SDL_tolower(*str1);
+ b = SDL_tolower(*str2);
return (int) ((unsigned char) a - (unsigned char) b);
}
#endif
@@ -769,6 +771,8 @@
++str2;
--maxlen;
}
+ a = SDL_tolower(*str1);
+ b = SDL_tolower(*str2);
return (int) ((unsigned char) a - (unsigned char) b);
}
#endif
--- a/src/video/win32/SDL_d3drender.c Wed Jul 19 04:24:41 2006 +0000
+++ b/src/video/win32/SDL_d3drender.c Wed Jul 19 05:03:21 2006 +0000
@@ -359,12 +359,6 @@
IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE,
D3DCULL_NONE);
IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE);
- IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE,
- TRUE);
- IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND,
- D3DBLEND_SRCALPHA);
- IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND,
- D3DBLEND_INVSRCALPHA);
return renderer;
}
@@ -627,6 +621,38 @@
vertices[3].u = minu;
vertices[3].v = maxv;
+ switch (blendMode) {
+ case SDL_TextureBlendMode_None:
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE,
+ FALSE);
+ break;
+ case SDL_TextureBlendMode_Mask:
+ case SDL_TextureBlendMode_Blend:
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE,
+ TRUE);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND,
+ D3DBLEND_SRCALPHA);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND,
+ D3DBLEND_INVSRCALPHA);
+ break;
+ case SDL_TextureBlendMode_Add:
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE,
+ TRUE);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND,
+ D3DBLEND_SRCALPHA);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND,
+ D3DBLEND_ONE);
+ break;
+ case SDL_TextureBlendMode_Mod:
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE,
+ TRUE);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND,
+ D3DBLEND_ZERO);
+ IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND,
+ D3DBLEND_SRCCOLOR);
+ break;
+ }
+
result =
IDirect3DDevice9_SetTexture(data->device, 0,
(IDirect3DBaseTexture9 *) texturedata->
--- a/test/common.c Wed Jul 19 04:24:41 2006 +0000
+++ b/test/common.c Wed Jul 19 05:03:21 2006 +0000
@@ -105,7 +105,7 @@
}
if (SDL_strcasecmp(argv[index], "--windows") == 0) {
++index;
- if (!argv[index] || !isdigit(*argv[index])) {
+ if (!argv[index] || !SDL_isdigit(*argv[index])) {
return -1;
}
if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
--- a/test/testgl2.c Wed Jul 19 04:24:41 2006 +0000
+++ b/test/testgl2.c Wed Jul 19 05:03:21 2006 +0000
@@ -193,7 +193,7 @@
}
}
if (consumed < 0) {
- fprintf(stderr, "Usage: %s [--fsaa] [--accel] %s", argv[0],
+ fprintf(stderr, "Usage: %s %s [--fsaa] [--accel]", argv[0],
CommonUsage(state));
quit(1);
}
--- a/test/testsprite2.c Wed Jul 19 04:24:41 2006 +0000
+++ b/test/testsprite2.c Wed Jul 19 05:03:21 2006 +0000
@@ -8,7 +8,7 @@
#define NUM_SPRITES 100
#define MAX_SPEED 1
-#define BACKGROUND 0x00FFFFFF
+#define BACKGROUND 0x00A0A0A0
static CommonState *state;
static int num_sprites;
@@ -16,6 +16,7 @@
static SDL_Rect *positions;
static SDL_Rect *velocities;
static int sprite_w, sprite_h;
+static SDL_TextureBlendMode blendMode = SDL_TextureBlendMode_Mask;
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
static void
@@ -107,7 +108,7 @@
}
/* Blit the sprite onto the screen */
- SDL_RenderCopy(sprite, NULL, position, SDL_TextureBlendMode_Mask,
+ SDL_RenderCopy(sprite, NULL, position, blendMode,
SDL_TextureScaleMode_None);
}
@@ -135,11 +136,31 @@
consumed = CommonArg(state, i);
if (consumed == 0) {
- num_sprites = SDL_atoi(argv[i]);
- consumed = 1;
+ consumed = -1;
+ if (SDL_strcasecmp(argv[i], "--blend") == 0) {
+ if (argv[i + 1]) {
+ if (SDL_strcasecmp(argv[i + 1], "none") == 0) {
+ blendMode = SDL_TextureBlendMode_None;
+ consumed = 2;
+ } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) {
+ blendMode = SDL_TextureBlendMode_Blend;
+ consumed = 2;
+ } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) {
+ blendMode = SDL_TextureBlendMode_Add;
+ consumed = 2;
+ } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) {
+ blendMode = SDL_TextureBlendMode_Mod;
+ consumed = 2;
+ }
+ }
+ } else if (SDL_isdigit(*argv[i])) {
+ num_sprites = SDL_atoi(argv[i]);
+ consumed = 1;
+ }
}
if (consumed < 0) {
- fprintf(stderr, "Usage: %s %s", argv[0], CommonUsage(state));
+ fprintf(stderr, "Usage: %s %s [--blend none|blend|add|mod]",
+ argv[0], CommonUsage(state));
quit(1);
}
i += consumed;