SDL_Texture * SDL_CreateTexture(SDL_Renderer *renderer, SDL_PixelFormat format, SDL_TextureAccess access, int w, int h);
| SDL_Renderer * | renderer | レンダリングコンテキスト |
| SDL_PixelFormat | format | SDL_PixelFormatの1つ |
| SDL_TextureAccess | access | SDL_TextureAccessの1つ |
| int | w | テクスチャの幅 |
| int | h | テクスチャの高さ |
生成されたテクスチャの内容は未定義である.
この関数を呼べるのはメインスレッドのみである.
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
/* Moving Rectangle */
int main(int argc, char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *texture;
SDL_Event event;
SDL_FRect r;
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDLを初期化できなかった: %s", SDL_GetError());
return 3;
}
window = SDL_CreateWindow("SDL_CreateTexture",
1024, 768,
SDL_WINDOW_RESIZABLE);
r.w = 100;
r.h = 50;
renderer = SDL_CreateRenderer(window, NULL);
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 1024, 768);
while (1) {
SDL_PollEvent(&event);
if(event.type == SDL_EVENT_QUIT)
break;
r.x = SDL_rand(500);
r.y = SDL_rand(500);
SDL_SetRenderTarget(renderer, texture);
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
SDL_RenderClear(renderer);
SDL_RenderRect(renderer,&r);
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);
SDL_RenderFillRect(renderer, &r);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderTexture(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}