Mike Gorchak to Sam
Hello Sam! You have reverted back my patches for OpenGL renderer :) To reproduce an issue, compare graphics output while running these tests: testdraw2 --renderer opengl --blend mask --cyclealpha and testdraw2 --renderer software --blend mask --cyclealpha You will see, that software renderer output is different from opengl renderer output. Thanks! --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404199
This commit is contained in:
parent
0f770140c0
commit
0c1f40faf7
1 changed files with 15 additions and 8 deletions
|
@ -1055,7 +1055,7 @@ GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects,
|
|||
}
|
||||
|
||||
static void
|
||||
GL_SetBlendMode(GL_RenderData * data, int blendMode)
|
||||
GL_SetBlendMode(GL_RenderData * data, int blendMode, int isprimitive)
|
||||
{
|
||||
if (blendMode != data->blendMode) {
|
||||
switch (blendMode) {
|
||||
|
@ -1064,9 +1064,16 @@ GL_SetBlendMode(GL_RenderData * data, int blendMode)
|
|||
data->glDisable(GL_BLEND);
|
||||
break;
|
||||
case SDL_BLENDMODE_MASK:
|
||||
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
data->glEnable(GL_BLEND);
|
||||
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
if (isprimitive) {
|
||||
/* The same as SDL_BLENDMODE_NONE */
|
||||
blendMode = SDL_BLENDMODE_NONE;
|
||||
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
data->glDisable(GL_BLEND);
|
||||
} else {
|
||||
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
||||
data->glEnable(GL_BLEND);
|
||||
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
break;
|
||||
case SDL_BLENDMODE_BLEND:
|
||||
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
|
@ -1093,7 +1100,7 @@ GL_RenderPoint(SDL_Renderer * renderer, int x, int y)
|
|||
{
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
|
||||
GL_SetBlendMode(data, renderer->blendMode);
|
||||
GL_SetBlendMode(data, renderer->blendMode, 1);
|
||||
|
||||
data->glColor4f((GLfloat) renderer->r * inv255f,
|
||||
(GLfloat) renderer->g * inv255f,
|
||||
|
@ -1112,7 +1119,7 @@ GL_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2)
|
|||
{
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
|
||||
GL_SetBlendMode(data, renderer->blendMode);
|
||||
GL_SetBlendMode(data, renderer->blendMode, 1);
|
||||
|
||||
data->glColor4f((GLfloat) renderer->r * inv255f,
|
||||
(GLfloat) renderer->g * inv255f,
|
||||
|
@ -1137,7 +1144,7 @@ GL_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect)
|
|||
{
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
|
||||
GL_SetBlendMode(data, renderer->blendMode);
|
||||
GL_SetBlendMode(data, renderer->blendMode, 1);
|
||||
|
||||
data->glColor4f((GLfloat) renderer->r * inv255f,
|
||||
(GLfloat) renderer->g * inv255f,
|
||||
|
@ -1206,7 +1213,7 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
GL_SetBlendMode(data, texture->blendMode);
|
||||
GL_SetBlendMode(data, texture->blendMode, 0);
|
||||
|
||||
if (texture->scaleMode != data->scaleMode) {
|
||||
switch (texture->scaleMode) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue