2017-01-13 14 views
1

私はSDL 2.0.5とWindows 10を使用してウィンドウを作成し、テクスチャを表示しています。SDL_PIXELFORMAT_NV12ピクセル形式を使用してSDL2テクスチャを作成できません

テクスチャがSDL_PIXELFORMAT_YV12ピクセル形式で初期化されているが、フォーマットをSDL_PIXELFORMAT_NV12に設定すると、SDL_CreateTexture関数はnullを返します。ここで

はコードです:

SDL_Window* window = SDL_CreateWindow(
    "Test", 
    SDL_WINDOWPOS_UNDEFINED, 
    SDL_WINDOWPOS_UNDEFINED, 
    width, 
    height, 
    SDL_WINDOW_FULLSCREEN_DESKTOP 
); 

SDL_Renderer* renderer = SDL_CreateRenderer(window , -1, SDL_RENDERER_SOFTWARE); 

SDL_Texture* texture = SDL_CreateTexture(
    renderer, 
    SDL_PIXELFORMAT_NV12, 
    SDL_TEXTUREACCESS_STREAMING, 
    width, 
    height 
); 

私は何かが足りないのですか?

+0

ハードウェア/ドライバが 'SDL_PIXELFORMAT_NV12'をサポートしていますか? – Dmitri

+0

わかりませんが、SDL_RENDERER_ACCELERATEDの代わりにSDL_RENDERER_SOFTWAREを設定すると、同じ結果が得られます。 – Ben

+0

ソフトウェアレンダラーは、この形式をサポートしていません(https://hg.libsdl.org/SDL/file/ba1da2658d76/src/render/software/SDL_render_sw.c#l84)。実際、GLおよびGLES2レンダラだけが行います。 – keltar

答えて

2

keltarのコメントによると、SDL_PIXELFORMAT_NV12にはハードウェアアクセラレーションが必要です。

NV12ピクセル形式をサポートするOpenGLレンダラーを使用する方法があります。

したがって、次のようにヒントを設定してください。 SDL_SetHint(SDL_HINT_RENDER_DRIVER、 "opengl"); SDL_CreateRenderer関数にSDL_RENDERER_ACCELERATEDフラグをセットするとそのトリックが実行されます。

関連する問題