mirror of
https://github.com/yawut/SDL.git
synced 2026-07-17 01:46:33 -05:00
wiiu/render: consolidate calls to SetRenderTarget, minor tweaks
This commit is contained in:
parent
c337fd57f5
commit
cea1907155
|
|
@ -42,7 +42,6 @@ WIIU_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
SDL_Surface *surface
|
||||
SDL_Renderer *renderer;
|
||||
WIIU_RenderData *data;
|
||||
WIIU_WindowData *wdata;
|
||||
|
||||
surface = SDL_GetWindowSurface(window);
|
||||
if (!surface) {
|
||||
|
|
@ -50,12 +49,6 @@ WIIU_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
wdata = (WIIU_WindowData *) SDL_GetWindowData(window, WIIU_WINDOW_DATA);
|
||||
if (!surface) {
|
||||
SDL_SetError("Can't access window data");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer));
|
||||
if (!renderer) {
|
||||
SDL_OutOfMemory();
|
||||
|
|
@ -128,18 +121,11 @@ WIIU_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
// Setup sampler
|
||||
GX2InitSampler(&data->sampler, GX2_TEX_CLAMP_MODE_CLAMP, GX2_TEX_XY_FILTER_MODE_LINEAR);
|
||||
|
||||
// Setup color buffer
|
||||
memcpy(&data->cbuf.surface, &wdata->texture.surface, sizeof(GX2Surface));
|
||||
data->cbuf.surface.use = GX2_SURFACE_USE_TEXTURE | GX2_SURFACE_USE_COLOR_BUFFER;
|
||||
data->cbuf.viewNumSlices = 1;
|
||||
GX2InitColorBufferRegs(&data->cbuf);
|
||||
|
||||
// Setup context state
|
||||
// Create a fresh context state
|
||||
GX2SetupContextStateEx(&data->ctx, TRUE);
|
||||
GX2SetContextState(&data->ctx);
|
||||
GX2SetColorBuffer(&data->cbuf, GX2_RENDER_TARGET_0);
|
||||
GX2SetViewport(0, 0, (float)data->cbuf.surface.width, (float)data->cbuf.surface.height, 0.0f, 1.0f);
|
||||
GX2SetScissor(0, 0, (float)data->cbuf.surface.width, (float)data->cbuf.surface.height);
|
||||
|
||||
// Setup colour buffer, rendering to the window
|
||||
WIIU_SetRenderTarget(renderer, NULL);
|
||||
|
||||
return renderer;
|
||||
}
|
||||
|
|
@ -147,22 +133,10 @@ WIIU_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
static void
|
||||
WIIU_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
|
||||
{
|
||||
WIIU_RenderData *data = (SW_RenderData *) renderer->driverdata;
|
||||
WIIU_WindowData *wdata = (WIIU_WindowData *) SDL_GetWindowData(renderer->window, WIIU_WINDOW_DATA);
|
||||
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
// Update color buffer
|
||||
memset(&data->cbuf, 0, sizeof(data->cbuf));
|
||||
memcpy(&data->cbuf.surface, &wdata->texture.surface, sizeof(GX2Surface));
|
||||
data->cbuf.surface.use = GX2_SURFACE_USE_TEXTURE | GX2_SURFACE_USE_COLOR_BUFFER;
|
||||
data->cbuf.viewNumSlices = 1;
|
||||
GX2InitColorBufferRegs(&data->cbuf);
|
||||
|
||||
// Update context state
|
||||
GX2SetContextState(&data->ctx);
|
||||
GX2SetColorBuffer(&data->cbuf, GX2_RENDER_TARGET_0);
|
||||
GX2SetViewport(0, 0, (float)data->cbuf.surface.width, (float)data->cbuf.surface.height, 0.0f, 1.0f);
|
||||
GX2SetScissor(0, 0, (float)data->cbuf.surface.width, (float)data->cbuf.surface.height);
|
||||
// Re-init the colour buffer etc. for new window size
|
||||
// TODO check: what if we're rendering to a texture when this happens?
|
||||
WIIU_SetRenderTarget(renderer, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -171,7 +145,7 @@ WIIU_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||
{
|
||||
GX2Texture *wiiu_tex = (GX2Texture*) SDL_calloc(1, sizeof(*wiiu_tex));
|
||||
if (!wiiu_tex)
|
||||
return -1;
|
||||
return SDL_OutOfMemory();
|
||||
|
||||
wiiu_tex->surface.width = TextureNextPow2(texture->w);
|
||||
wiiu_tex->surface.height = TextureNextPow2(texture->h);
|
||||
|
|
@ -183,7 +157,7 @@ WIIU_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||
wiiu_tex->surface.mipLevels = 1;
|
||||
wiiu_tex->viewNumMips = 1;
|
||||
wiiu_tex->viewNumSlices = 1;
|
||||
wiiu_tex->compMap = 0x00010203; //comment?
|
||||
wiiu_tex->compMap = 0x00010203;
|
||||
|
||||
GX2CalcSurfaceSizeAndAlignment(&wiiu_tex->surface);
|
||||
wiiu_tex->surface.image = memalign(wiiu_tex->surface.alignment, wiiu_tex->surface.imageSize);
|
||||
|
|
@ -319,6 +293,7 @@ TextureNextPow2(Uint32 w)
|
|||
return n;
|
||||
}
|
||||
|
||||
//TODO: This could return a compMap to support stuff like ARGB or ABGR
|
||||
static GX2SurfaceFormat
|
||||
PixelFormatToWIIUFMT(Uint32 format)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user