[SDL] Weird behaviour on the Raspberry Pi

Jonathan Dearborn grimfang4 at gmail.com
Wed Sep 28 09:44:56 PDT 2016


Can you simplify this example with fewer textures and RTT calls and still
get this behavior?

Jonny D


On Wed, Sep 28, 2016 at 12:40 PM, Andreas Falkenhahn <andreas at falkenhahn.com
> wrote:

> On 28.09.2016 at 17:59 rtrussell wrote:
>
> >  One thing I would question is that there's no SDL_RenderClear().
> > The docs say "You are strongly encouraged to call SDL_RenderClear()
> > to initialize the backbuffer before starting each new frame's
> > drawing".  Does it make any difference if you change it as follows:
>
> No, doesn't make any difference. The screen still alternates between
> red and black. Here is the updated code for reference:
>
> #include <SDL.h>
>
> int main(int argc, char *argv[])
> {
>         SDL_Window *window;
>         SDL_Renderer *renderer;
>         SDL_Texture *texture1, *texture2, *texture3;
>         SDL_Event se;
>         int quit = 0, k;
>         int w = 295, reverse = 0;
>         char *pixbuf = malloc(640 * 480 * 4);
>         unsigned int *ptr;
>
>         SDL_Init(SDL_INIT_VIDEO);
>         SDL_VideoInit("RPI");
>
>         window = SDL_CreateWindow("Foo", 0, 0, 640, 480, 0);
>         renderer = SDL_CreateRenderer(window, -1, 0);
>         texture1 = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888,
> SDL_TEXTUREACCESS_STREAMING, 640, 480);
>         texture2 = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888,
> SDL_TEXTUREACCESS_STREAMING, 640, 480);
>
>         memset(pixbuf, 0, 640 * 480 * 4);
>         SDL_UpdateTexture(texture1, NULL, pixbuf, 640 * 4);
>         SDL_RenderCopy(renderer, texture1, NULL, NULL);
>         SDL_RenderPresent(renderer);
>
>         ptr = (unsigned int *) pixbuf;
>         for(k = 0; k < 640 * 480; k++) *ptr++ = 0xffff0000;
>         SDL_UpdateTexture(texture2, NULL, pixbuf, 640 * 4);
>
>         SDL_ShowWindow(window);
>         SDL_RaiseWindow(window);
>
>         while(!quit) {
>
>                 texture3 = SDL_CreateTexture(renderer,
> SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, w, w);
>
>                 SDL_SetRenderTarget(renderer, texture3);
>                 SDL_SetTextureBlendMode(texture2, SDL_BLENDMODE_NONE);
>                 SDL_RenderCopy(renderer, texture2, NULL, NULL);
>                 SDL_SetTextureBlendMode(texture3, SDL_BLENDMODE_BLEND);
>
>                 SDL_SetRenderTarget(renderer, NULL);
>                 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
>                 SDL_RenderClear(renderer);
>                 SDL_RenderCopy(renderer, texture1, NULL, NULL);
>                 SDL_RenderCopy(renderer, texture3, NULL, NULL);
>                 SDL_RenderPresent(renderer);
>
>                 while(SDL_PollEvent(&se)) {
>                         if(se.type == SDL_MOUSEBUTTONDOWN) quit = 1;
>                 }
>
>                 SDL_DestroyTexture(texture3);
>
>                 if(reverse) {
>                         w -= 10;
>                 } else {
>                         w += 10;
>                 }
>
>                 if(w >= 640) {
>                         w = 640;
>                         reverse = 1;
>                 } else if(w <= 2) {
>                         w = 2;
>                         reverse = 0;
>                 }
>         }
>
>         SDL_DestroyTexture(texture1);
>         SDL_DestroyTexture(texture2);
>
>         SDL_DestroyRenderer(renderer);
>         SDL_DestroyWindow(window);
>
>         SDL_Quit();
>
>         free(pixbuf);
>
>         return 0;
> }
>
> --
> Best regards,
>  Andreas Falkenhahn                            mailto:
> andreas at falkenhahn.com
>
> _______________________________________________
> SDL mailing list
> SDL at lists.libsdl.org
> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20160928/9ae74531/attachment.htm>


More information about the SDL mailing list