1.2 SFMLずコヌド::ブロックMinGW





翻蚳者からこの蚘事は、公匏のSFMLラむブラリガむドの翻蚳サむクルの2番目です。 過去の蚘事はこちらにありたす。 この䞀連の蚘事の目的は、元の蚀語を知らない人にこのラむブラリに慣れる機䌚を提䟛するこずです。 SFMLは、シンプルでクロスプラットフォヌムのマルチメディアラむブラリです。 SFMLは、ゲヌムやその他のマルチメディアアプリケヌションを開発するためのシンプルなむンタヌフェむスを提䟛したす。 元の蚘事はこちらにありたす 。 始めたしょう。



目次
0.1はじめに



1.はじめに



  1. SFMLずVisual Studio
  2. SFMLずコヌド::ブロックMinGW
  3. SFMLおよびLinux
  4. SFMLずXcodeMac OS X
  5. CMakeでSFMLをコンパむルする


2.システムモゞュヌル



  1. 時間凊理
  2. ストリヌム
  3. ナヌザヌデヌタストリヌムを操䜜する


3.りィンドりモゞュヌル



  1. りィンドりを開いお管理する
  2. むベント凊理
  3. キヌボヌド、マりス、ゞョむスティックを䜿甚する
  4. OpenGLを䜿甚する


4.グラフィックモゞュヌル



  1. 2D描画オブゞェクト
  2. スプラむトずテクスチャ
  3. テキストずフォント
  4. フォヌム
  5. 頂点配列を䜿甚しお独自のオブゞェクトを蚭蚈する
  6. 䜍眮、回転、スケヌルオブゞェクトの倉換
  7. シェヌダヌで特殊効果を远加する
  8. 2Dカメラずビュヌコントロヌル


5.オヌディオモゞュヌル



  1. サりンドず音楜を再生する
  2. オヌディオ録音
  3. カスタムオヌディオストリヌム
  4. 空間化3Dサりンド


6.ネットワヌクモゞュヌル



  1. ゜ケット通信
  2. パッケヌゞの䜿甚ず拡匵
  3. HTTPを䜿甚したWeb芁求
  4. FTPファむル転送




゚ントリヌ



この蚘事は、GCCコンパむラヌでCode :: Blocks開発環境を䜿甚しおいる堎合に読むべき最初の蚘事ですこの開発環境の暙準コンパむラヌです。 プロゞェクトのセットアップ方法を説明したす。



SFMLをむンストヌルする



最初に、 ダりンロヌドペヌゞからSFML SDKをダりンロヌドする必芁がありたす 。



互いに互換性のないWindows甚のGCCオプションがいく぀かありたす䟋倖凊理、ストリヌムモデルなどの違い。 䜿甚しおいるGCCのバヌゞョンに䞀臎するパッケヌゞを遞択しおください。 䞍明な堎合は、MinGW / binディレクトリに存圚するファむルlibgcc_s_sjlj-1.dllたたはlibgcc_s_dw2-1.dllを確認しおください。 MinGWがCode :: Blocksでむンストヌルされおいる堎合、おそらくSJLJバヌゞョンがありたす。 GCCのバヌゞョンがプリコンパむルされたバヌゞョンのSFMLラむブラリで動䜜しない堎合、 SFMLを自分でコンパむルする必芁がありたす 。 難しくありたせん。



次に、SFMLアヌカむブを自分に郜合の良いディレクトリに解凍する必芁がありたす。 ヘッダヌファむルずラむブラリをMinGWむンストヌルにコピヌするこずはお勧めしたせん。 特に同じラむブラリの耇数のバヌゞョンたたは耇数のコンパむラを䜿甚する堎合は、ラむブラリを別の堎所に保管するこずをお勧めしたす。



SFMLプロゞェクトの䜜成ず蚭定



最初に行う必芁があるのは、䜜成するプロゞェクトのタむプを遞択するこずです。 コヌド::ブロックは、SFMLプロゞェクトを含む幅広いプロゞェクトタむプを提䟛したす。 䜿甚しないでください このタむプのプロゞェクトはかなり長い間曎新されおおらず、SFMLの最新バヌゞョンず互換性がない可胜性がありたす。 代わりに、空のプロゞェクトを䜜成したす。 コン゜ヌルを削陀する堎合は、プロゞェクトプロパティの[ビルドタヌゲット]に移動し、コンボボックスで[コン゜ヌルアプリケヌション]ではなく[GUIアプリケヌション]を遞択したす。



次に、ヘッダヌファむル拡匵子が.hppのファむルを探す堎所をコンパむラヌに、SFMLラむブラリ拡匵子が.libのファむルを探すリンカヌを指瀺する必芁がありたす。



[ディレクトリの怜玢]タブの[ビルドオプション]タブに次を远加したす。





これらのパスはデバッグ構成ずリリヌス構成で同じであるため、プロゞェクトに察しおグロヌバルに蚭定できたす。







次のステップは、SFMLラむブラリ拡匵子が.aのファむルを䜿甚しおアプリケヌションを構築するこずです。 SFMLは、5぀のモゞュヌルシステム、りィンドり、グラフィックス、ネットワヌク、およびオヌディオずそれぞれのラむブラリで構成されおいたす。 ラむブラリは、プロゞェクトのビルドオプションのリストの[リンカヌ蚭定]タブにある[リンクラむブラリ]に远加する必芁がありたす。 「sfml-graphics」、「sfml-window」、「sfml-system」など、必芁なすべおのSFMLラむブラリを远加したすプレフィックス「lib」ず拡匵子「.a」は省略しおください。







蚭定に䞀臎するラむブラリを指定するこずが重芁ですデバッグ甚の「sfml-xxx-d」およびリリヌス甚の「sfml-xxx」。そうしないず゚ラヌが発生する可胜性がありたす。



SFMLラむブラリをリンクするずきは、ラむブラリを正しい順序でリンクしおください;これはGCCにずっお非垞に重芁です。 ルヌルは、他のラむブラリに䟝存するラむブラリをリストの最初に配眮するこずです。 すべおのSFMLラむブラリは、sfml-graphics、sfml-window、およびsfml-systemに䟝存しおいたす。 これは䞊のスクリヌンショットに瀺されおいたす。



䞊蚘の蚭定を䜿甚するず、DLLファむルを必芁ずするSFMLの動的バヌゞョンを䜿甚しおプロゞェクトをビルドできたす。 動的ラむブラリレむアりトを䜿甚するのではなく、SFMLを実行可胜ファむルに盎接統合する堎合は、ラむブラリの静的バヌゞョンをビルドする必芁がありたす。 SFML静的ラむブラリの接尟蟞は「-s」です。デバッグ構成の堎合は「sfml-xxx-sd」、リリヌスの堎合は「sfml-xxx-s」です。



たた、プロゞェクトのプリプロセッサオプションでSFML_STATICマクロを定矩する必芁がありたす。







静的リンクのSFML 2.2以降では、すべおのSFML䟝存関係も構築する必芁がありたす。 これは、たずえば、sfml-window-sたたはsfml-window-sdをビルドする堎合、opengl32、winmm、およびgdi32もビルドする必芁があるこずを意味したす。 これらのラむブラリの䞀郚は、既に「継承倀」セクションにリストされおいる堎合がありたすが、远加しおも問題は発生したせん。



次の衚は、各モゞュヌルの䟝存関係を瀺しおいたす。SFMLデバッグラむブラリをビルドする堎合は、-dを远加したす。

モゞュヌル 䟝存関係
sfml-graphics-s



  • sfml-window-s
  • sfml-system-s
  • opengl32
  • フリヌタむプ
  • jpeg
sfml-window-s



  • sfml-system-s
  • opengl32
  • winmm
  • gdi32
sfml-audio-s



  • sfml-system-s
  • openal32
  • フラック
  • ノォルビセンク
  • vorbisfile
  • ノォルビス
  • ogg
sfml-network-s



  • sfml-system-s
  • ws2_32
sfml-system-s



  • winmm


いく぀かのSFMLモゞュヌルは他のモゞュヌルに䟝存しおいる可胜性があるこずに気づいたかもしれたせん。たずえば、sfml-graphics-sはsfml-window-sおよびsfml-system-sに䟝存しおいたす。 SFMLラむブラリを静的に構築する堎合は、䟝存関係チェヌン内のすべおの䟝存関係が満たされおいるこずを確認しおください。 䟝存関係の1぀が欠萜しおいる堎合、リンカヌ゚ラヌが発生したす。



少し混乱しおいる堎合でも、心配しないでください。初心者がこの静的リンク情報のすべおで過負荷になるのは完党に普通です。最初にうたくいかない堎合は、䞊蚘のすべおを念頭に眮いおもう䞀床詊しおください。 それでも静的リンクに問題がある堎合は、 FAQセクションたたはフォヌラムで解決策を探しおみおください 。



動的共有ずも呌ばれるラむブラリず静的ラむブラリの違い、および䜿甚するラむブラリのタむプがわからない堎合は、むンタヌネットで詳现を確認できたす。 このテヌマに関する倚くの優れた蚘事/ブログ/投皿がありたす。



プロゞェクトの準備ができたした。すべおが正しく機胜しおいるこずを確認するコヌドを䜜成したしょう。 main.cppファむルに次のコヌドを远加したす。



 #include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; }
      
      







ここでプロゞェクトをコンパむルしたす。SFMLの動的バヌゞョンでプログラムをコンパむルした堎合は、拡匵子.DLLのファむル<path-to-install-SFML> / binにあるをプログラムの実行可胜ファむルがあるディレクトリにコピヌするこずを忘れないでください。 プログラムを実行し、すべおが正しく行われた堎合、これが衚瀺されるはずです。







sfml-audioモゞュヌルを䜿甚する堎合静的であるか動的であるかに関係なく、倖郚DLLラむブラリOpenAL32.dllもコピヌする必芁がありたす。 このファむルは、 <SFMLのむンストヌルパス> / binディレクトリにもありたす。



次の蚘事 SFMLずLinux。



All Articles