Implemented OpenGL ES RenderClear()
This commit is contained in:
parent
7fda55f8d4
commit
ea8037a625
3 changed files with 26 additions and 24 deletions
|
@ -848,21 +848,6 @@ SDL_RenderClear(SDL_Renderer * renderer)
|
||||||
{
|
{
|
||||||
CHECK_RENDERER_MAGIC(renderer, -1);
|
CHECK_RENDERER_MAGIC(renderer, -1);
|
||||||
|
|
||||||
if (!renderer->RenderClear) {
|
|
||||||
SDL_BlendMode blendMode = renderer->blendMode;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
if (blendMode >= SDL_BLENDMODE_BLEND) {
|
|
||||||
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
status = SDL_RenderFillRect(renderer, NULL);
|
|
||||||
|
|
||||||
if (blendMode >= SDL_BLENDMODE_BLEND) {
|
|
||||||
SDL_SetRenderDrawBlendMode(renderer, blendMode);
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
return renderer->RenderClear(renderer);
|
return renderer->RenderClear(renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ static int GLES_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
|
||||||
static void GLES_UnlockTexture(SDL_Renderer * renderer,
|
static void GLES_UnlockTexture(SDL_Renderer * renderer,
|
||||||
SDL_Texture * texture);
|
SDL_Texture * texture);
|
||||||
static int GLES_UpdateViewport(SDL_Renderer * renderer);
|
static int GLES_UpdateViewport(SDL_Renderer * renderer);
|
||||||
|
static int GLES_RenderClear(SDL_Renderer * renderer);
|
||||||
static int GLES_RenderDrawPoints(SDL_Renderer * renderer,
|
static int GLES_RenderDrawPoints(SDL_Renderer * renderer,
|
||||||
const SDL_Point * points, int count);
|
const SDL_Point * points, int count);
|
||||||
static int GLES_RenderDrawLines(SDL_Renderer * renderer,
|
static int GLES_RenderDrawLines(SDL_Renderer * renderer,
|
||||||
|
@ -180,6 +181,7 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||||
renderer->LockTexture = GLES_LockTexture;
|
renderer->LockTexture = GLES_LockTexture;
|
||||||
renderer->UnlockTexture = GLES_UnlockTexture;
|
renderer->UnlockTexture = GLES_UnlockTexture;
|
||||||
renderer->UpdateViewport = GLES_UpdateViewport;
|
renderer->UpdateViewport = GLES_UpdateViewport;
|
||||||
|
renderer->RenderClear = GLES_RenderClear;
|
||||||
renderer->RenderDrawPoints = GLES_RenderDrawPoints;
|
renderer->RenderDrawPoints = GLES_RenderDrawPoints;
|
||||||
renderer->RenderDrawLines = GLES_RenderDrawLines;
|
renderer->RenderDrawLines = GLES_RenderDrawLines;
|
||||||
renderer->RenderFillRects = GLES_RenderFillRects;
|
renderer->RenderFillRects = GLES_RenderFillRects;
|
||||||
|
@ -451,6 +453,21 @@ GLES_UpdateViewport(SDL_Renderer * renderer)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
GLES_RenderClear(SDL_Renderer * renderer)
|
||||||
|
{
|
||||||
|
GLES_ActivateRenderer(renderer);
|
||||||
|
|
||||||
|
glClearColor((GLfloat) renderer->r * inv255f,
|
||||||
|
(GLfloat) renderer->g * inv255f,
|
||||||
|
(GLfloat) renderer->b * inv255f,
|
||||||
|
(GLfloat) renderer->a * inv255f);
|
||||||
|
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
GLES_SetBlendMode(GLES_RenderData * data, int blendMode)
|
GLES_SetBlendMode(GLES_RenderData * data, int blendMode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -770,19 +770,19 @@ static int GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const
|
||||||
const SDL_Rect *dstrect);
|
const SDL_Rect *dstrect);
|
||||||
static void GLES2_RenderPresent(SDL_Renderer *renderer);
|
static void GLES2_RenderPresent(SDL_Renderer *renderer);
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
GLES2_RenderClear(SDL_Renderer * renderer)
|
GLES2_RenderClear(SDL_Renderer * renderer)
|
||||||
{
|
{
|
||||||
float r = (float)renderer->r * inv255f;
|
|
||||||
float g = (float)renderer->g * inv255f;
|
|
||||||
float b = (float)renderer->b * inv255f;
|
|
||||||
float a = (float)renderer->a * inv255f;
|
|
||||||
|
|
||||||
GLES2_ActivateRenderer(renderer);
|
GLES2_ActivateRenderer(renderer);
|
||||||
|
|
||||||
/* Clear the backbuffer with the selected color */
|
glClearColor((GLfloat) renderer->r * inv255f,
|
||||||
glClearColor(r, g, b, a);
|
(GLfloat) renderer->g * inv255f,
|
||||||
|
(GLfloat) renderer->b * inv255f,
|
||||||
|
(GLfloat) renderer->a * inv255f);
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue