ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ sfml
SFML and Visual Studio
Introduction
This tutorial is the first one you should read if you’re using SFML with the Visual Studio IDE (Visual C++ compiler). It will explain how to configure your SFML projects.
Installing SFML
First, you must download the SFML SDK from the download page.
You must download the package that matches your version of Visual C++. Indeed, a library compiled with VC++ 10 (Visual Studio 2010) won’t be compatible with VC++ 12 (Visual Studio 2013) for example. If there’s no SFML package compiled for your version of Visual C++, you will have to build SFML yourself.
You can then unpack the SFML archive wherever you like. Copying headers and libraries to your installation of Visual Studio is not recommended, it’s better to keep libraries in their own separate location, especially if you intend to use several versions of the same library, or several compilers.
Creating and configuring a SFML project
The first thing to do is choose what kind of project to create. It is recommended to select «Empty Project». The dialog window offers a few other options to customize the project: select «Console application» or «Windows application» only if you know how to use pre-compiled headers.
For the purpose of this tutorial, you should create a main.cpp file and add it to the project, so that we have access to the C++ settings (otherwise Visual Studio doesn’t know which language you’re going to use for this project). We’ll explain what to put inside later.
Now we need to tell the compiler where to find the SFML headers (.hpp files), and the linker where to find the SFML libraries (.lib files).
In the project’s properties, add:
These paths are the same in both Debug and Release configuration, so you can set them globally for your project («All configurations»).
The next step is to link your application to the SFML libraries (.lib files) that your code will need. SFML is made of 5 modules (system, window, graphics, network and audio), and there’s one library for each of them.
Libraries must be added in the project’s properties, in Linker Β» Input Β» Additional Dependencies. Add all the SFML libraries that you need, for example «sfml-graphics.lib», «sfml-window.lib» and «sfml-system.lib».
It is important to link to the libraries that match the configuration: «sfml-xxx-d.lib» for Debug, and «sfml-xxx.lib» for Release. A bad mix may result in crashes.
The settings shown here will result in your application being linked to the dynamic version of SFML, the one that needs the DLL files. If you want to get rid of these DLLs and have SFML directly integrated into your executable, you must link to the static version. Static SFML libraries have the «-s» suffix: «sfml-xxx-s-d.lib» for Debug, and «sfml-xxx-s.lib» for Release.
In this case, you’ll also need to define the SFML_STATIC macro in the preprocessor options of your project.
Starting from SFML 2.2, when static linking, you will have to link all of SFML’s dependencies to your project as well. This means that if you are linking sfml-window-s.lib or sfml-window-s-d.lib for example, you will also have to link opengl32.lib, winmm.lib and gdi32.lib. Some of these dependency libraries might already be listed under «Inherited values», but adding them again yourself shouldn’t cause any problems.
You might have noticed from the table that SFML modules can also depend on one another, e.g. sfml-graphics-s.lib depends both on sfml-window-s.lib and sfml-system-s.lib. If you static link to an SFML library, make sure to link to the dependencies of the library in question, as well as the dependencies of the dependencies and so on. If anything along the dependency chain is missing, you will get linker errors.
If you are slightly confused, don’t worry, it is perfectly normal for beginners to be overwhelmed by all this information regarding static linking. If something doesn’t work for you the first time around, you can simply keep trying always bearing in mind what has been said above. If you still can’t get static linking to work, you can check the FAQ and the forum for threads about static linking.
If you don’t know the differences between dynamic (also called shared) and static libraries, and don’t know which one to use, you can search for more information on the internet. There are many good articles/blogs/posts about them.
Your project is ready, let’s write some code now to make sure that it works. Put the following code inside the main.cpp file:
If you chose to create a «Windows application» project, the entry point of your code has to be set to «WinMain» instead of «main». Since it’s Windows specific, and your code would therefore not compile on Linux or macOS, SFML provides a way to keep a standard «main» entry point in this case: link your project to the sfml-main module («sfml-main-d.lib» in Debug, «sfml-main.lib» in Release), the same way you linked sfml-graphics, sfml-window and sfml-system.
Now compile the project, and if you linked to the dynamic version of SFML, don’t forget to copy the SFML DLLs (they are in ) to the directory where your compiled executable is. Run it, and if everything works you should see this:
If you are using the sfml-audio module (regardless whether statically or dynamically), you must also copy the DLL of the external library needed by it, which is OpenAL32.dll.
These files can be found in too.
1.2 SFML ΠΈ Code::Blocks (MinGW)
ΠΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ SFML. ΠΡΠΎΡΠ»ΡΡ ΡΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡ. ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ ΡΡΠ°Π²ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π»ΡΠ΄ΡΠΌ, Π½Π΅ Π·Π½Π°ΡΡΠΈΠΌ ΡΠ·ΡΠΊ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Ρ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. SFML β ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. SFML ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ ΠΈ ΠΏΡΠΎΡΠΈΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡ. ΠΠ°ΡΠ½Π΅ΠΌ.
1. ΠΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ ΡΠ°Π±ΠΎΡΠ΅
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ β ΠΏΠ΅ΡΠ²Π°Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Code::Blocks Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ GCC (ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ). Π Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° SFML
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°ΡΠ°ΡΡ SFML SDK ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² GCC Π΄Π»Ρ Windows, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ (ΠΎΡΠ»ΠΈΡΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π² ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Ρ.Π΄.). Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΠ±ΠΈΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ GCC, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² (libgcc_s_sjlj-1.dll ΠΈΠ»ΠΈ libgcc_s_dw2-1.dll) ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ MinGW/bin. ΠΡΠ»ΠΈ MinGW ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Code::Blocks, Ρ Π²Π°Ρ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° SJLJ Π²Π΅ΡΡΠΈΡ. ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ GCC Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ SFML ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠ°Π»Π΅Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π°ΡΡ ΠΈΠ² Ρ SFML Π² Π»ΡΠ±ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ Π²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ MinGW Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΡΡΡΠ΅ Π΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ².
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° SFML
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠΏ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Code::Blocks ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ Π²ΡΠ±ΠΎΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Β«SFML projectΒ». ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ! ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»ΡΡ ΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ SFML. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π² ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Β«Build targetsΒ» ΠΈ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π²ΡΠ±ΠΈΡΠΈΡΠ΅ Β«GUI applicationΒ» Π²ΠΌΠ΅ΡΡΠΎ Β«Console applicationΒ».
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² Β«Build optionsΒ», Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«Search directoriesΒ» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ°ΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ: Β«sfml-xxx-dΒ» Π΄Π»Ρ Debug ΠΈ Β«sfml-xxxΒ» Π΄Π»Ρ Release, ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ SFML, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΡΠΎΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ GCC. ΠΡΠ°Π²ΠΈΠ»ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΡΠ±Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SFML Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ sfml-graphics, sfml-window ΠΈ sfml-system. ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ½ΠΈΠΌΠΊΠ΅ ΡΠΊΡΠ°Π½Π° Π²ΡΡΠ΅.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ SFML, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅Π±ΡΡΡΡΡ DLL ΡΠ°ΠΉΠ»Ρ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ SFML Π² Π²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML ΠΈΠΌΠ΅ΡΡ ΡΡΡΡΠΈΠΊΡ «-s»: Β«sfml-xxx-s-dΒ» Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Debug ΠΈ Β«sfml-xxx-sΒ» Π΄Π»Ρ Release.
Π’Π°ΠΊ ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ SFML_STATIC Π² ΠΎΠΏΡΠΈΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ SFML 2.2 ΠΏΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ Π²Π°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ SFML. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΠ΅ sfml-window-s ΠΈΠ»ΠΈ sfml-window-s-d, Π²Π°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ opengl32, winmm ΠΈ gdi32. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Inherited valuesΒ», Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠ°Π»ΠΈΡΡ, Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ.ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΡΠ°Π· ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΡΠ΅ ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ FAQ ΠΈΠ»ΠΈ Π½Π° ΡΠΎΡΡΠΌΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ (ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠΈΠΌΠΈ) ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠ° Π΄Π°Π½Π½ΡΡ ΡΠ΅ΠΌΡ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ/Π±Π»ΠΎΠ³ΠΎΠ²/ΠΏΠΎΡΡΠΎΠ².
ΠΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π³ΠΎΡΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΡΠΎ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» main.cpp:
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ sfml-audio (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΡ), Π²Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΡΡ dll Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenAL32.dll. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /bin.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SFML? Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° SFML Π² C++
ΠΠ±Π½ΠΎΠ²Π». 30 ΠΠΊΡ 2021 |
ΠΡΡΡ, ΠΏΠ°ΡΠ΅Π½Ρ! ΠΠ΅ Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ SFML? Π£Π±ΠΎΠΉΠ½Π°Ρ ΡΡΡΠΊΠ°. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΌΠ°Π»ΠΎΡΡΠΈ ΠΈ Ρ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡ ΡΠΌΠΎΠΆΠ΅ΡΡ Π²ΠΎΠΏΠ»ΠΎΡΠΈΡΡ Π² ΠΆΠΈΠ·Π½Ρ ΡΠΎ, ΠΎ ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠ³ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠ°ΡΡ. Π’Π΅Π±Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π±Π΅, ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡΠΊΡ, ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΡΡΠΈΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Ρ ΡΠ³ΠΎΡΠ°Ρ. ΠΡ ΡΡΠΎ, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈΡΡ? Π’ΠΎΠ³Π΄Π° ΠΏΠΎ ΡΡΠΊΠ°ΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SFML?
Π‘ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ Π½Π΅ΠΏΡΠΈΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»ΡΠ±ΡΡ 2D-Π³ΡΠ°ΡΠΈΠΊΡ: Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠ³ΡΡ (ΡΠΈΠΏΠ° ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°) ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ³ΡΠ°ΠΌΠΈ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ΡΠ°ΠΌΠΈ.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ zlib/png, Π° ΡΠΊΠ°ΡΠ°ΡΡ SFML ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΎΡ. ΡΠ°ΠΉΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° www.sfml-dev.org.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ° Π±ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°Π½Ρ ΠΌΠ½ΠΎΠΉ Π² ΠΠ‘ Windows 7 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ IDE MS Visual Studio 2017 Community Edition ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML 2.5.1.
ΠΡ ΡΡΠΎ, ΠΏΠ°ΡΠ΅Π½Ρ, ΡΡ Π³ΠΎΡΠΎΠ²? ΠΠ° Π²ΠΈΠΆΡ, ΡΡΠΎ Π³ΠΎΡΠΎΠ². ΠΠΎΠ³Π½Π°Π»ΠΈ!
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML Π² Visual Studio
Π― Π½Π΅ Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Visual Studio, Π° ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΡΡΠ°Π·Ρ ΠΊ SFML. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡ www.sfml-dev.org ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Β«DownloadΒ» ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Β«SFML 2.5.1Β»:
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ IDE Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Visual Studio 2017, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π²Π΅ΡΡΠΈΡ SFML. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΡΡΡΠ΅ΡΠΎΠ² Code Blocks. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Π² Π³Π»Π°Π·Π° Π±ΡΠΎΡΠ°ΡΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Visual Studio. Π‘ΡΠ°Π·Ρ Π΄Π°ΠΌ ΡΠΎΠ²Π΅Ρ β Π½Π΅ ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π»Π΅ΠΏΠΈΡΡ Π€ΡΠ°Π½ΠΊΠ΅Π½ΡΡΠ΅ΠΉΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π±ΠΈΠ»Π΄ SFML, ΠΈΠ½Π°ΡΠ΅ Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π°Π³ΠΎΠ½ ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ ΡΠ΅Π»Π΅ΠΆΠΊΡ Π²ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° ΡΠ²ΠΎΡ Π³ΠΎΠ»ΠΎΠ²Ρ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π½Π΅Π³ΠΎ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΎΠΊΠ½Π΅ Β«ΠΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΉΒ» ΠΊΠ»Π°ΡΠ½ΠΈΡΠ΅ ΠΠΠ ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ «ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ» > «ΠΠΎΠ±Π°Π²ΠΈΡΡ» > «Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ⦻ :
Π ΠΏΠΎΠ»Π΅ Β«ΠΠΌΡΒ» ΡΠΊΠ°ΠΆΠΈΡΠ΅ main.cpp :
ΠΡΠ»ΠΈΡΠ½ΠΎ! Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ:
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² SFML ( /include );
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² SFML ( /lib );
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ SFML Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² «ΠΡΠΎΠ΅ΠΊΡ» > «Π‘Π²ΠΎΠΉΡΡΠ²Π°: SFML_Tutorial⦻ :
sfml-graphics-d.lib
sfml-window-d.lib
sfml-audio-d.lib
sfml-system-d.lib
ΠΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅β¦
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π― Π²ΠΈΠΆΡ, ΠΊΠ°ΠΊ Π²Π°ΡΠ° ΡΡΠΊΠ° ΡΠΆΠ΅ ΠΏΠΎΡΡΠ½ΡΠ»Π°ΡΡ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΒ», Π½ΠΎ Π½Π΅ ΡΠΎΡΠΎΠΏΠΈΡΠ΅ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄:
Π‘ΡΡΠΎΠΊΠ° β8: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ window ΠΊΠ»Π°ΡΡΠ° RenderWindow. ΠΠ°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ β ΡΡΠΎ Π½Π°ΡΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ 2D-Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ VideoMode(200, 200) Π·Π°Π΄Π°Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° (ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ). ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ «SFML Works!» β ΡΡΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°.
ΠΠ°Π»Π΅Π΅ ΠΈΠ΄ΡΡ 2 ΡΠΈΠΊΠ»Π° while: Π²Π½Π΅ΡΠ½ΠΈΠΉ (ΡΡΡΠΎΠΊΠ° β11) ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ (ΡΡΡΠΎΠΊΠ° β15). Π‘Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π·Π΄Π΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ. SFML ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΈΡ ΠΌΡ ΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΠΊΠ½Π°. ΠΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌ ΡΠΈΠΊΠ»Π΅ while ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° isOpen() ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΎΡΠΊΡΡΡΠΎ Π»ΠΈ Π½Π°ΡΠ΅ ΠΎΠΊΠ½ΠΎ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠΈΠΊΠ»Π΅ while ΠΌΠ΅ΡΠΎΠ΄ pollEvent(event) ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ±ΡΡΠΈΠΉ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅.
ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ», ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΠΈΡ Π²ΡΠ΅. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΡΡΡΠΎΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ. SFML ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ ΡΡΠΎ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ Π΄Π²Π° ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ: ΠΎΠ΄Π½ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ° ΠΈ ΠΎΠ΄Π½ΠΎ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° pollEvent() ΠΊΠ»Π°ΡΡΠ° RenderWindow. Π’Π°ΠΊ Π²ΠΎΡ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΈΠ· ΡΡΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Event::Closed (Ρ.Π΅. ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» Π½Π° ΠΊΡΠ΅ΡΡΠΈΠΊ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΡΠ»Π°Π² ΡΠΈΠ³Π½Π°Π» Β«ΠΠ°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎΒ»), ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ windows.close() ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎΡ ΡΠΈΠΊΠ» Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ΅Π½, ΠΈ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ β Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΡΡΡΠΎΠΊΠ΅ β23 ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ display(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ Π² Visual Studio «ΠΡΠ»Π°Π΄ΠΊΠ°» > «ΠΠ°ΠΏΡΡΠΊ Π±Π΅Π· ΠΎΡΠ»Π°Π΄ΠΊΠΈ» (ΠΈΠ»ΠΈ Ctrl+F5 ). ΠΠΈΠΈΠΈ, Π²ΠΎΡ ΠΈ ΠΎΠ½Π°! ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρβ¦ Π§Π’Πβ¦. ΠΠ¨ΠΠΠΠβ¦. WTFβ¦.
Β«Π§ΡΠΎ Π·Π° Ρ ΡΠ΅Π½Ρ. Β» β ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ. Π‘ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ°ΡΠ΅Π½ΠΎ Π½Π° ΠΊΠΎΠ²ΡΡΡΠ½ΠΈΠ΅, Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΈ ΠΏΡΠΎΡΠ΅Π΅ ΡΠ°Π΄ΠΈ Π²ΠΎΡ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡ?! ΠΠΎΠ»Π±Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ?! ΠΠ°ΡΠΈΠ³ Π²ΡΡ, Π΄ΠΈΠ·Π»Π°ΠΉΠΊ/ΠΎΡΠΏΠΈΡΠΊΠ°, Π³ΠΎ Π΄Π°ΡΡ2 Ρ ΡΠΎΠ·Π΄Π°Π».
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π£ΡΠΎΠΊ 1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML ΠΊ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Visual Studio 2013
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ SFML (Simple and fast multimedia library) ΠΊ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Microsft Visual Studio 2013:
Microsoft Visual Studio 2013
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ http://www.sfml-dev.org/download/sfml/2.2/ (Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π²Π΅ΡΡΠΈΡ Visual C++ 12 (2013) β 32-bit);
ΠΠΈΠ΄Π΅ΠΎΠ²Π΅ΡΡΠΈΡ http://www.youtube.com/watch?v=IghUVIL6okk
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΊΡΠ΄Π° Π²Π°ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ (Ρ ΠΌΠ΅Π½Ρ D:/SFML-2.2/); Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² Π² ΠΏΠ°ΠΏΠΊΠ°Ρ ΠΏΡΡΠΈ. (ΡΠΎ Π΅ΡΡΡ C:/ΠΏΡΠΈΠ²Π΅ΡΠΈΠΊ/ β Π»ΡΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ)
ΠΠ°Π»Π΅Π΅ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²ΠΎΡ ΡΡΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» main.cpp
ΠΠ΅ ΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ β ΡΠ»ΠΎΠ²ΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ β Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ SFML.
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π²Π²Π΅ΡΡ Ρ Β«ΠΏΡΠΎΠ΅ΠΊΡΒ»->ΡΠ²ΠΎΠΉΡΡΠ²Π° βΠΈΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°β->ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ->C++->ΠΎΠ±ΡΠΈΠ΅
Π ΠΏΡΠ½ΠΊΡΠ΅ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΡΡΡ Π΄ΠΎ ΡΠ°Π½Π½Π΅Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ ΠΈΠ²Π° Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ (+ \include.)
Π£ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊ: D:\SFML-2.2\include
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ ΠΊ sfml Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠΈ include
ΠΠ°ΡΠ΅ΠΌ ΠΈΠ΄Π΅ΠΌ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ->ΠΎΠ±ΡΠΈΠ΅ ΠΈ Π² ΠΏΡΠ½ΠΊΡΠ΅ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΒ» ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ lib (Ρ ΠΌΠ΅Π½Ρ D:\SFML-2.2\lib);
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΡΡ Π΄ΠΎ lib ΡΠ°ΠΉΠ»ΠΎΠ² (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ)
ΠΠ°Π»Π΅Π΅ ΠΈΠ΄Π΅ΠΌ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ Π²Π²ΠΎΠ΄ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΒ» Π²ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ΅ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΡΠΊΡ:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ lib ΡΠ°ΠΉΠ»Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΡΡ Π΅ΡΠ΅ Π·Π²ΡΠΊ ΠΈ ΡΠ΅ΡΡ, Π½ΠΎ ΠΎ Π½ΠΈΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
(ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Debug. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ΅Π»ΠΈΠ·, ΠΈΠ»ΠΈ ΡΡΠ°Π·Ρ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ β ΠΌΠ΅Π½ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠΎ ΠΈΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°)
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΡΠΈΡ β ΠΈΠ΄Π΅ΠΌ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ C++->ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Β«ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Β» Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ: SFML_DYNAMIC;
(Ρ SFML_STATIC Ρ ΠΌΠ΅Π½Ρ Π² Visual Studio 2013 ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ)
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΈ ΡΠ»ΠΎΠ²ΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ°ΡΠΎ ΡΠΎΠ±Π΅ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠ°ΠΏΠΊΠ° debug.
Π’Π΅ΠΏΠ΅ΡΡ ΠΈΠ΄Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠ² βbinβ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΊΠ°ΡΠ°Π»ΠΈ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π»ΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ (ΠΌΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ D:\SFML-2.2\bin\) ΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π²ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (dll ΡΠ°ΠΉΠ»Ρ ΡΠΈΠΏΠ° sfml-graphics-2.dll) Π² ΠΏΠ°ΠΏΠΊΡ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π² ΠΏΠ°ΠΏΠΊΡ debug (ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΡΠ° ΠΏΠ°ΠΏΠΊΠ°), Π½ΠΎ Π½Π΅ Π² ΡΠΎΡ debug, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ βmain.cppβ, Π° ΡΠΎΡ, Π³Π΄Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ exe ΡΠ°ΠΉΠ». (ΠΌΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ C:\Users\ΠΠ°Π²Π΅Π»\Documents\Visual Studio 2013\Projects\sfmltest\debug\)
Π ΡΡΡ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈ Π²ΠΎΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ :
(ΠΎΠ½ΠΈ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π΅ΡΡΡ Π² bin (Π² sfml 2.1 ΡΠ°Π½ΡΡΠ΅ Π±ΡΠ»ΠΈ, Π² 2.2 β Π½Π΅ΡΡ), ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ Π½Π΅Ρ)
(ΡΠ°ΠΌ Π² Π°ΡΡ ΠΈΠ²Π΅ Π΅ΡΠ΅ ΠΈ ΡΠ°ΠΉΠ» openal32.dll, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ bin ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ. ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ΅Π½ Π½Π°ΠΌ ΠΏΠΎΡΠΎΠΌ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π·Π²ΡΠΊΠΎΠΌ).
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π·Π΅Π»ΡΠ½ΡΠΉ ΠΊΡΡΠ³ ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ Π½ΠΈΠΆΠ΅:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΌΡ:)
ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅. ΡΠ°ΠΊΠΎΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π‘ΡΡΠ»ΠΊΠ° Π½ΠΈΠΆΠ΅:
ΠΠΎΠΏΡΠΎΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ Π½Π° ΡΠΎΡΡΠΌΠ΅. ΠΠ΅ΡΡ ΠΌΠ°Π½ΡΠ°Π» Π±ΡΠ» Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°, ΠΌΡ ΠΏΠΎΠΊΠ° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, Π° Π½Π΅ Π²ΡΠΏΡΡΠΊΠ°Π΅ΠΌ.
1.1 SFML ΠΈ Visual Studio
ΠΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ SFML. ΠΠ°Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ ΡΡΠ°Π²ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π»ΡΠ΄ΡΠΌ, Π½Π΅ Π·Π½Π°ΡΡΠΈΠΌ ΡΠ·ΡΠΊ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡ Ρ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. SFML β ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. SFML ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ ΠΈ ΠΏΡΠΎΡΠΈΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡ. ΠΠ°ΡΠ½Π΅ΠΌ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SFML ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΠ³Ρ ΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: system, window, graphics, audio ΠΈ network.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ SFML, Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ : Windows, Linux, Mac OS X(ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Android ΠΈ IOS).
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ SDK Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΠ‘ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
1. ΠΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ ΡΠ°Π±ΠΎΡΠ΅
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ β ΠΏΠ΅ΡΠ²Π°Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Visual Studio (Visual C++ compiler). Π Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° SFML
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°ΡΠ°ΡΡ SFML SDK ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
Π‘ΠΊΠ°ΡΠ΅Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Visual C++. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ VC++ 10 (Visual Studio 2010) Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ VC++ 12 (Visual Studio 2013). ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ SFML, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Visual C++, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ SFML ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ°Π»Π΅Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π°ΡΡ ΠΈΠ² Ρ SFML Π² Π»ΡΠ±ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ Π΄Π»Ρ Π²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π²Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Visual Studio Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΡΡΡΠ΅ Π΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ².
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° SFML
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠΏ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ±ΡΠ°ΡΡ Β«Win32 applicationΒ». ΠΠ°ΡΡΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ Π²Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°: Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«Console applicationΒ» Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ, Π»ΠΈΠ±ΠΎ Β«Windows applicationΒ» Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Β«Empty projectΒ», Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» main.cpp ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΈΠΌ Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ C++ (Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Visual Studio Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°). Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° main.cpp Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈΠΆΠ΅.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ°ΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ: Β«sfml-xxx-d.libΒ» Π΄Π»Ρ Debug ΠΈ Β«sfml-xxx.libΒ» Π΄Π»Ρ Release, ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ SFML, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅Π±ΡΡΡΡΡ DLL ΡΠ°ΠΉΠ»Ρ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ SFML Π² Π²Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SFML ΠΈΠΌΠ΅ΡΡ ΡΡΡΡΠΈΠΊΡ «-s»: Β«sfml-xxx-s-d.libΒ» Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Debug ΠΈ Β«sfml-xxx-s.libΒ» Π΄Π»Ρ Release.
Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ SFML_STATIC Π² ΠΎΠΏΡΠΈΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ SFML 2.2 ΠΏΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ SFML. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΠ΅ sfml-window-s.lib ΠΈΠ»ΠΈ sfml-window-s-d.lib, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ opengl32.lib, winmm.lib ΠΈ gdi32.lib. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Inherited valuesΒ», Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠ°Π»ΠΈΡΡ, Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ.ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΡΠ°Π· ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΡΠ΅ ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ FAQ ΠΈΠ»ΠΈ Π½Π° ΡΠΎΡΡΠΌΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ (ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠΈΠΌΠΈ) ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠ° Π΄Π°Π½Π½ΡΡ ΡΠ΅ΠΌΡ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ/Π±Π»ΠΎΠ³ΠΎΠ²/ΠΏΠΎΡΡΠΎΠ².
ΠΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π³ΠΎΡΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» main.cpp:
ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Ρ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΎΠΏΡΠΈΡ Β«Windows applicationΒ», ΡΠΎ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Π² Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Β«WinMainΒ» Π²ΠΌΠ΅ΡΡΠΎ Β«mainΒ». Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° Windows, Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Linux ΠΈΠ»ΠΈ Mac OS X. SFML ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Β«mainΒ» Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ sfml-main (Β«sfml-main-d.libΒ» Π΄Π»Ρ Debug, Β«sfml-main.libΒ» Π΄Π»Ρ Release) ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π»ΠΈ sfml-graphics, sfml-window ΠΈ sfml-system.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ sfml-audio (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΡ), Π²Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΡΡ dll Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ OpenAL32.dll. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /bin.