chat GPTとかの回答をそのまま貼り付けることがあります。
作りながら気づいたことを随時追加していきます。
認識違いや追記などございましたら、ご指摘いただけると嬉しいです。
surfaceとdisplay surfaceの違い
pygameにおいて、'surface'と 'display surface'は異なるものですか?
はい、Pygameにおいて「surface」と「display surface」は異なる概念ですが、両者は関連しています。
Surface: Pygameでは、Surfaceは画像や図形を描画するための基本的なオブジェクトです。これは基本的にピクセルの2次元配列で、いかなるグラフィカルコンテンツもこのSurfaceに描画されます。あなたは多くのSurfaceオブジェクトを作成し、それらに異なるグラフィック(スプライト、テキスト、図形など)を描画することができます。
Display Surface: display surfaceは特別なSurfaceで、これはPygameウィンドウまたはスクリーン上に表示されるメインの画面です。pygame.display.set_mode()関数を使って初期化され、これにより画面のサイズと特性が設定されます。他のすべてのSurfaceオブジェクトは、このdisplay surfaceに描画されるか、あるいはdisplay surface自体に直接描画されます。
簡単に言うと、Surfaceはキャンバスのようなもので、display surfaceはそのキャンバスを展示するギャラリーの壁のようなものです。他のSurfaceオブジェクトはdisplay surfaceに描画されることで、最終的にユーザーのスクリーン上に表示されます。
色々やって、display surfaceに描きこむ→display 画面を更新してdisplay surfaceのと同期する、の流れ
文字であれば、
文字を描く
→その文字用のサイズの小さなsurfaceができる
→そのsurfaceをdisplay surfaceに描きこむ
→画面を更新して、現在のdisplay surfaceの内容に更新する
実際の描画の部分は、OSの機能を呼び出していて、場合によっては不思議な挙動はそっちが関係する
参照:https://github.com/pygame/pygame/issues/251#issuecomment-619552646
pygame.display.update(rect)を呼び出した後、色々あってSDL_UpdateWindowSurfaceRects関数を呼び出す
そこから、OSのグラフィック描写ライブラリが呼び出される
これによって生じた環境起因の分かりにくい挙動:
https://teratail.com/questions/6ibljaslxoffl6