目次 - API(機能別) - 2Dレンダリング - SDL_CreateTexture

SDL_CreateTexture

レンダリングコンテキストのテクスチャを生成する

構文

SDL_Texture* SDL_CreateTexture(SDL_Renderer* renderer, Uint32 format, int access, int w, int h)

引数

rendererレンダリングコンテキスト
formatSDL_PixelFormatEnumの1つ
accessSDL_TextureAccessの1つ
wテクスチャの幅
hテクスチャの高さ

戻り値

成功のとき生成されたテクスチャへのポインタを戻す. レンダリングコンテキストが使えない, formatが対応していない, wまたはhが範囲外のときNULLを戻す. SDL_GetError()で詳細を知ることができる.

サンプルコード

#include<stdlib.h>
#include"SDL.h"
// 四角形を動かす
int main()
{
        SDL_Window *window;
        SDL_Renderer *renderer;
        SDL_Texture *Texture;
        SDL_Event event;
        SDL_Rect r;
        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
                SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDLを初期化できなかった: %s", SDL_GetError());
                return 3;
        }

        window = SDL_CreateWindow("SDL_CreateTexture",
                        SDL_WINDOWPOS_UNDEFINED,
                        SDL_WINDOWPOS_UNDEFINED,
                        1024, 768,
                        SDL_WINDOW_RESIZABLE);

        r.w = 100;
        r.h = 50;

        renderer = SDL_CreateRenderer(window, -1, 0);

        Texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 1024, 768);


        while(1)
        {
                SDL_PollEvent(&event);
                if(event.type == SDL_QUIT)
                        break;
                r.x=rand()%500;
                r.y=rand()%500;

                SDL_SetRenderTarget(renderer, Texture);
                SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
                SDL_RenderClear(renderer);
                SDL_RenderDrawRect(renderer,&r);
                SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0x00);
                SDL_RenderFillRect(renderer, &r);
                SDL_SetRenderTarget(renderer, NULL);
                SDL_RenderCopy(renderer, Texture, NULL, NULL);
                SDL_RenderPresent(renderer);
        }
        SDL_DestroyRenderer(renderer);
        return 0;
}

詳細

テクスチャを生成する前にSDL_HINT_RENDER_SCALE_QUALITYを設定することでテクスチャの拡大方法を設定できる.

関連項目(関数)

SDL_CreateTextureFromSurface
SDL_DestroyTexture
SDL_QueryTexture
SDL_UpdateTexture

SDL Wikiへのリンク

SDL_CreateTexture - SDL Wiki