Ответ 1
Сначала мне нужно прояснить некоторые заблуждения: рендеринг на основе текстур не работает, как это делал старый рендеринг поверхности. Хотя вы можете использовать SDL_Surface
как источник или пункт назначения, SDL_Texture
предназначены для использования в качестве источника для рендеринга, а бесплатный SDL_Renderer
используется как пункт назначения. Как правило, вам придется выбирать между старой средой рендеринга, которая полностью выполняется на процессоре, а новая - для графического процессора, но возможно смешение.
Итак, для вас вопросы:
- Текстуры не обеспечивают прямой доступ к пикселям, поэтому лучше делать их на поверхностях.
- Зависит. Не печатать на текстурах, если это не очень часто, и вы хотите ускорить его позже.
- Говоря о текстурах, вы всегда будете отображать
SDL_Renderer
и всегда лучше загружать поверхности на текстуры. - Как я объяснил в первом абзаце, нет текстуры окна. Вы можете использовать полностью рендеринг на основе поверхности или полностью рендеринг на основе текстур. Если вам действительно нужны оба (если вы хотите иметь прямой доступ к пикселям и ускоренный рендеринг), лучше сделайте, как вы сказали: blit все на одну поверхность, а затем загрузите в текстуру.
Наконец, вы должны использовать текстуры всякий раз, когда можете. Поверхностное использование является исключением, используйте его, когда вам нужно либо интенсивно манипулировать пикселями, либо иметь дело с устаревшим кодом.