2017-01-13 6 views
1

Я использую SDL 2.0.5 и Windows 10 для создания окна и отображения текстуры.Невозможно создать текстуру SDL2 с использованием формата пикселя SDL_PIXELFORMAT_NV12

Все работает нормально, когда текстура была инициализирована с помощью формата 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_SOFTWARE вместо SDL_RENDERER_ACCELERATED дает мне тот же результат. – Ben

+0

Программный рендерер [не поддерживает] (https://hg.libsdl.org/SDL/file/ba1da2658d76/src/render/software/SDL_render_sw.c#l84) этот формат. На самом деле это делают только визуализаторы GL и GLES2. – keltar

ответ

2

Согласно комментарию кельтара, SDL_PIXELFORMAT_NV12 требует аппаратного ускорения.

Одним из решений является использование средства рендеринга OpenGL, поддерживающего формат пикселя NV12.

Итак, установочный подсказку следующим образом: SDL_SetHint (SDL_HINT_RENDER_DRIVER, "opengl"); и установка флага SDL_RENDERER_ACCELERATED в функцию SDL_CreateRenderer делает трюк.

 Смежные вопросы

  • Нет связанных вопросов^_^