Fixed bug 1622 - SDL_RenderSetViewport with empty SDL_Rect raises wrong error for OpenGL rendering backend
It's now legal to set an empty viewport rect - it will prevent any rendering. Also added an API to query the output size: SDL_GetRendererOutputSize()
This commit is contained in:
parent
b337b40e33
commit
c55f53aa40
8 changed files with 103 additions and 64 deletions
|
@ -866,23 +866,25 @@ D3D_UpdateViewport(SDL_Renderer * renderer)
|
|||
IDirect3DDevice9_SetViewport(data->device, &viewport);
|
||||
|
||||
/* Set an orthographic projection matrix */
|
||||
matrix.m[0][0] = 2.0f / renderer->viewport.w;
|
||||
matrix.m[0][1] = 0.0f;
|
||||
matrix.m[0][2] = 0.0f;
|
||||
matrix.m[0][3] = 0.0f;
|
||||
matrix.m[1][0] = 0.0f;
|
||||
matrix.m[1][1] = -2.0f / renderer->viewport.h;
|
||||
matrix.m[1][2] = 0.0f;
|
||||
matrix.m[1][3] = 0.0f;
|
||||
matrix.m[2][0] = 0.0f;
|
||||
matrix.m[2][1] = 0.0f;
|
||||
matrix.m[2][2] = 1.0f;
|
||||
matrix.m[2][3] = 0.0f;
|
||||
matrix.m[3][0] = -1.0f;
|
||||
matrix.m[3][1] = 1.0f;
|
||||
matrix.m[3][2] = 0.0f;
|
||||
matrix.m[3][3] = 1.0f;
|
||||
IDirect3DDevice9_SetTransform(data->device, D3DTS_PROJECTION, &matrix);
|
||||
if (renderer->viewport.w && renderer->viewport.h) {
|
||||
matrix.m[0][0] = 2.0f / renderer->viewport.w;
|
||||
matrix.m[0][1] = 0.0f;
|
||||
matrix.m[0][2] = 0.0f;
|
||||
matrix.m[0][3] = 0.0f;
|
||||
matrix.m[1][0] = 0.0f;
|
||||
matrix.m[1][1] = -2.0f / renderer->viewport.h;
|
||||
matrix.m[1][2] = 0.0f;
|
||||
matrix.m[1][3] = 0.0f;
|
||||
matrix.m[2][0] = 0.0f;
|
||||
matrix.m[2][1] = 0.0f;
|
||||
matrix.m[2][2] = 1.0f;
|
||||
matrix.m[2][3] = 0.0f;
|
||||
matrix.m[3][0] = -1.0f;
|
||||
matrix.m[3][1] = 1.0f;
|
||||
matrix.m[3][2] = 0.0f;
|
||||
matrix.m[3][3] = 1.0f;
|
||||
IDirect3DDevice9_SetTransform(data->device, D3DTS_PROJECTION, &matrix);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue