テクスチャと表面の違いは何ですか?誰でも簡単な言葉で私に説明できますか? SDL2
でSDL_Surface
およびSDL_Texture
として使用されているのを見ました。 SDL_Texture
はSDL_Surface
から作成され、これはイメージ/ビットマップから作成されます。両方ともピクセルのコレクションです。しかし、それらの主な違いはわかりません(GPUで何かする必要がありますか?)
私はそれをググってみましたが、私が見つけたすべての説明は複雑すぎて、コンピューターグラフィックスのことを深く掘り下げることなくそれらを理解することができませんでした。
基本的に、あなたの仮定は「GPUで何かをしなければならないのですか?」は正しい。
SDL_Surface
は、softwareレンダリングで使用されます。 saloomi2012 が正しく認識されるように、ソフトウェアレンダリングでは、通常のRAM=を使用して画像データを保存します。したがって、ほとんどの場合、サーフェスに関連付けられたデータバッファーに直接アクセスできますそのコンテンツを変更します。つまり、CPUを使用しているため、software名です。
一方、SDL_Texture
は、ハードウェアレンダリングで使用され、テクスチャはVRAMに保存され、直接アクセスできません。 SDL_Surface
と同様。レンダリング操作はGPUによって加速され、OpenGLまたはDirectX(Windowsでのみ使用可能)APIを内部的に使用します。APIはビデオハードウェアを使用するため、hardwareレンダリング名。
言うまでもなく、ハードウェアレンダリングはソフトウェアレンダリングよりも桁違いに高速であり、常に主要なオプションとして考慮されるべきです。
SDL_Texture
は、通常のRAMではなく、ビデオカードのVRAMにロードされます。
サーフェスはRAMを使用し、テクスチャはサーフェスよりも高速なビデオカードを使用します。
詳細については、次を参照してください。
https://thenumbat.github.io/cpp-course/sdl2/05/05.html
前のレッスンで述べたように、テクスチャはサーフェスに相当するGPUレンダリングです。したがって、テクスチャはほとんどの場合、SDL_CreateTextureFromSurface()関数を使用して、サーフェスから作成されます。この関数は多かれ少なかれあなたが期待することをします。パラメータはレンダリングコンテキストとテクスチャを作成するサーフェスです。他の作成関数と同様に、失敗するとNULLを返します。
お役に立てばと思います!