Mercurial > sdl-ios-xcode
view docs/html/sdlcreateyuvoverlay.html @ 3333:b334b4f7dfa0
[SDL] Bad math in SDL_RenderCopy
Mason Wheeler to sdl
When I tried to render an image using something other than NULL for srcrect, it got horribly distorted. I traced it down to the fact that the math in the rectangle adjustments performed just before the call to renderer->RenderCopy is written inside out. It should look like this:
if (dstrect->w != real_dstrect.w) {
int deltax = (dstrect->x - real_dstrect.x);
int deltaw = (dstrect->w - real_dstrect.w);
real_srcrect.x += (deltax * real_srcrect.w) / dstrect->w;
real_srcrect.w += (deltaw * real_srcrect.w) / dstrect->w;
}
if (dstrect->h != real_dstrect.h) {
int deltay = (dstrect->y - real_dstrect.y);
int deltah = (dstrect->h - real_dstrect.h);
real_srcrect.y += (deltay * real_srcrect.h) / dstrect->h;
real_srcrect.h += (deltah * real_srcrect.h) / dstrect->h;
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 03 Oct 2009 16:23:16 +0000 |
parents | 355632dca928 |
children |
line wrap: on
line source
<HTML ><HEAD ><TITLE >SDL_CreateYUVOverlay</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ "><LINK REL="HOME" TITLE="SDL Library Documentation" HREF="index.html"><LINK REL="UP" TITLE="Video" HREF="video.html"><LINK REL="PREVIOUS" TITLE="SDL_GL_SwapBuffers" HREF="sdlglswapbuffers.html"><LINK REL="NEXT" TITLE="SDL_LockYUVOverlay" HREF="sdllockyuvoverlay.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFF8DC" TEXT="#000000" LINK="#0000ee" VLINK="#551a8b" ALINK="#ff0000" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >SDL Library Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="sdlglswapbuffers.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="sdllockyuvoverlay.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SDLCREATEYUVOVERLAY" ></A >SDL_CreateYUVOverlay</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN2808" ></A ><H2 >Name</H2 >SDL_CreateYUVOverlay -- Create a YUV video overlay</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN2811" ></A ><H2 >Synopsis</H2 ><DIV CLASS="FUNCSYNOPSIS" ><A NAME="AEN2812" ></A ><P ></P ><PRE CLASS="FUNCSYNOPSISINFO" >#include "SDL.h"</PRE ><P ><CODE ><CODE CLASS="FUNCDEF" >SDL_Overlay *<B CLASS="FSFUNC" >SDL_CreateYUVOverlay</B ></CODE >(int width, int height, Uint32 format, SDL_Surface *display);</CODE ></P ><P ></P ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2818" ></A ><H2 >Description</H2 ><P ><TT CLASS="FUNCTION" >SDL_CreateYUVOverlay</TT > creates a YUV overlay of the specified <TT CLASS="PARAMETER" ><I >width</I ></TT >, <TT CLASS="PARAMETER" ><I >height</I ></TT > and <TT CLASS="PARAMETER" ><I >format</I ></TT > (see <A HREF="sdloverlay.html" ><SPAN CLASS="STRUCTNAME" >SDL_Overlay</SPAN ></A > for a list of available formats), for the provided <TT CLASS="PARAMETER" ><I >display</I ></TT >. A <A HREF="sdloverlay.html" ><SPAN CLASS="STRUCTNAME" >SDL_Overlay</SPAN ></A > structure is returned.</P ><P >The term 'overlay' is a misnomer since, unless the overlay is created in hardware, the contents for the display surface underneath the area where the overlay is shown will be overwritten when the overlay is displayed.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN2831" ></A ><H2 >See Also</H2 ><P ><A HREF="sdloverlay.html" ><SPAN CLASS="STRUCTNAME" >SDL_Overlay</SPAN ></A >, <A HREF="sdldisplayyuvoverlay.html" ><TT CLASS="FUNCTION" >SDL_DisplayYUVOverlay</TT ></A >, <A HREF="sdlfreeyuvoverlay.html" ><TT CLASS="FUNCTION" >SDL_FreeYUVOverlay</TT ></A ></P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="sdlglswapbuffers.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="sdllockyuvoverlay.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >SDL_GL_SwapBuffers</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="video.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >SDL_LockYUVOverlay</TD ></TR ></TABLE ></DIV ></BODY ></HTML >