# \[SDL3.x\] SDL\_RenderGeometry and transform

**URL:** <https://discourse.libsdl.org/t/sdl3-x-sdl-rendergeometry-and-transform/52316>\
**Category:** SDL Development\
**Created:** [June 27, 2024, 5:18pm UTC](https://discourse.libsdl.org/t/sdl3-x-sdl-rendergeometry-and-transform/52316 "2024-06-27T17:18:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mathias](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/m/bbe5ce/32.png) [@Mathias](https://discourse.libsdl.org/u/Mathias)\
**Post date:** [June 27, 2024, 5:18pm UTC](https://discourse.libsdl.org/t/sdl3-x-sdl-rendergeometry-and-transform/52316/1 "2024-06-27T17:18:23Z")

</div>

Is it possible to write to a kind of texture buffer using `SDL_RenderGeometry` and then draw it multiple times? The only thing that occurred to me is to set areas using `SDL_SetRenderViewport`. But then I have to re-render each time.

```auto
    SDL_Rect r = {0, 0, 400, 300};
    SDL_SetRenderViewport(renderer, &r);
    SDL_RenderGeometry(renderer, NULL, vert, vertLen, NULL, 0);

    r = {400, 0, 400, 300};
    SDL_SetRenderViewport(renderer, &r);
    SDL_RenderGeometry(renderer, NULL, vert, vertLen, NULL, 0);

```

---

<div class="post-metadata">

**Author:** ![Peter87](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/p/f07891/32.png) [@Peter87](https://discourse.libsdl.org/u/Peter87)\
**Post date:** [June 27, 2024, 5:36pm UTC](https://discourse.libsdl.org/t/sdl3-x-sdl-rendergeometry-and-transform/52316/2 "2024-06-27T17:36:01Z")

</div>

If the question is whether you can render to a texture, the answer is yes.

Just pass [`SDL_TEXTUREACCESS_TARGET`](https://wiki.libsdl.org/SDL3/SDL_TextureAccess) as the `access` argument when [creating the texture](https://wiki.libsdl.org/SDL3/SDL_CreateTexture) and use [`SDL_SetRenderTarget`](https://wiki.libsdl.org/SDL3/SDL_SetRenderTarget). After that, everything you render will be drawn to the texture instead of the window. When you’re finished, and want to render to the window again, just call `SDL_SetRenderTarget(renderer, NULL)`.

---

<div class="post-metadata">

**Author:** ![Mathias](https://discourse.libsdl.org/letter_avatar_proxy/v4/letter/m/bbe5ce/32.png) [@Mathias](https://discourse.libsdl.org/u/Mathias)\
**Post date:** [June 28, 2024, 6:06pm UTC](https://discourse.libsdl.org/t/sdl3-x-sdl-rendergeometry-and-transform/52316/3 "2024-06-28T18:06:27Z")

</div>

Thanks  
From the looks of it, this works similarly to the frame buffer in OpenGL. You can also render to a texture instead of the screen.
