La différence entre la surface et la texture (SDL / général)
Quelqu'un peut-il m'expliquer en termes simples ce qu'est la différence entre la texture et de la surface? Je l'ai vu utilisé dans SDL2
comme SDL_Surface
et SDL_Texture
. SDL_Texture
est créé à partir de SDL_Surface
qui à son tour est créé à partir d'une image bitmap/. Les deux sont de la collection de pixels. Mais je ne vois pas la différence principale entre eux (a faire quelque chose avec GPU?)
J'ai essayé de chercher sur google, mais toutes les explications que j'ai trouvées étaient trop complexes à comprendre, sans creuser plus profond dans l'informatique graphique trucs.
- Jetez un oeil à ma réponse ici: stackoverflow.com/questions/21007329/what-is-a-sdl-renderer/... Il va vous expliquer
SDL_Texture
etSDL_Surface
ainsi queSDL_Renderer
. En général,SDL_Texture
est ce qui est utilisé pour le rendu, mais lorsque vous chargez les informations de la texture à l'aide deSDL_Image
ouSDL_ttf
, vous obtiendrez les données comme unSDL_Surface
- La réponse est quasiment un copier-coller, j'aimerais vraiment une réponse avec quelques connaissances.
- Bien que vous supposez,
SDL_Surface
est juste une collection de pixels tandis queSDL_Texture
estan efficient, driver-specific representation of pixel data
sens, elle peut être utilisée par le GPU wiki.libsdl.org/SDL_Texture. Fait que répondre à votre question? Vous devriez vraiment creuser plus profondément dans l'infographie pour comprendre plus - Dommage que tu ne l'ai pas écrit dans votre réponse. Ici est votre chance.
Vous devez vous connecter pour publier un commentaire.
Fondamentalement votre hypothèse "a faire quelque chose avec GPU?" est à droite.
SDL_Surface
est utilisé dans logiciel rendu. Avec le logiciel de rendu des saloomi2012 remarqué correctement, vous utilisez régulièrement de RAM pour stocker des données d'image. Ainsi, dans la plupart des cas, vous pouvez accéder aux données de la mémoire tampon associée à la surface directement, de la modification de son contenu, c'est-à-utilisation de l'UC, d'où le logiciel nom.SDL_Texture
sur l'autre main, est utilisé dans un matériel rendu, les textures sont stockées dans la mémoire vidéo (VRAM) et vous n'avez pas accès à directement avecSDL_Surface
. Les opérations de rendu sont accélérés par le GPU, en utilisant, en interne, OpenGL ou DirectX (disponible uniquement sur Windows) de l'API, qui à son tour sont l'utilisation de votre matériel vidéo, d'où matériel rendu de nom.Inutile de dire que le matériel est rendu sur les ordres de grandeur plus rapide que le rendu logiciel et doit toujours être considérée comme première option.
SDL_Texture
est chargé dans votre carte vidéo de VRAM au lieu d'un RAM.Les Surfaces de l'utilisation de la RAM et de Textures utiliser votre carte vidéo qui est plus rapide
que les surfaces.
Il n'y a plus d'informations à ce sujet dans:
https://thenumbat.github.io/cpp-course/sdl2/05/05.html
J'espère que cela vous aide!