First pass on SDL render clip rect functionality
This commit is contained in:
parent
0a3ab9190b
commit
866f2e5f9e
10 changed files with 227 additions and 28 deletions
|
@ -56,6 +56,7 @@ static int GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
static void GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture);
|
||||
static int GL_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture);
|
||||
static int GL_UpdateViewport(SDL_Renderer * renderer);
|
||||
static int GL_UpdateClipRect(SDL_Renderer * renderer);
|
||||
static int GL_RenderClear(SDL_Renderer * renderer);
|
||||
static int GL_RenderDrawPoints(SDL_Renderer * renderer,
|
||||
const SDL_FPoint * points, int count);
|
||||
|
@ -324,6 +325,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
renderer->UnlockTexture = GL_UnlockTexture;
|
||||
renderer->SetRenderTarget = GL_SetRenderTarget;
|
||||
renderer->UpdateViewport = GL_UpdateViewport;
|
||||
renderer->UpdateClipRect = GL_UpdateClipRect;
|
||||
renderer->RenderClear = GL_RenderClear;
|
||||
renderer->RenderDrawPoints = GL_RenderDrawPoints;
|
||||
renderer->RenderDrawLines = GL_RenderDrawLines;
|
||||
|
@ -784,6 +786,21 @@ GL_UpdateViewport(SDL_Renderer * renderer)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
GL_UpdateClipRect(SDL_Renderer * renderer)
|
||||
{
|
||||
const SDL_Rect *rect = &renderer->clip_rect;
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
|
||||
if (!SDL_RectEmpty(rect)) {
|
||||
data->glEnable(GL_SCISSOR_TEST);
|
||||
data->glScissor(rect->x, rect->y, rect->x + rect->w, rect->y + rect->h);
|
||||
} else {
|
||||
data->glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
GL_SetShader(GL_RenderData * data, GL_Shader shader)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue