mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 15:14:35 +00:00
Updates the SDL library to the latest standard bugfix release
This commit is contained in:
parent
cb766f2878
commit
083d2175ea
1280 changed files with 343926 additions and 179615 deletions
|
|
@ -5,49 +5,23 @@ This port allows SDL applications to run on Microsoft's platforms that require
|
|||
use of "Windows Runtime", aka. "WinRT", APIs. Microsoft may, in some cases,
|
||||
refer to them as either "Windows Store", or for Windows 10, "UWP" apps.
|
||||
|
||||
Some of the operating systems that include WinRT, are:
|
||||
|
||||
* Windows 10, via its Universal Windows Platform (UWP) APIs
|
||||
* Windows 8.x
|
||||
* Windows RT 8.x (aka. Windows 8.x for ARM processors)
|
||||
* Windows Phone 8.x
|
||||
In the past, SDL has supported Windows RT 8.x, Windows Phone, etc, but in
|
||||
modern times this port is focused on UWP apps, which run on Windows 10,
|
||||
and modern Xbox consoles.
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Microsoft Visual C++ (aka Visual Studio), either 2017, 2015, 2013, or 2012
|
||||
* Microsoft Visual C++ (aka Visual Studio) 2019.
|
||||
- Free, "Community" or "Express" editions may be used, so long as they
|
||||
include support for either "Windows Store" or "Windows Phone" apps.
|
||||
include support for either "Windows Store" or "Windows Phone" apps.
|
||||
"Express" versions marked as supporting "Windows Desktop" development
|
||||
typically do not include support for creating WinRT apps, to note.
|
||||
(The "Community" editions of Visual C++ do, however, support both
|
||||
desktop/Win32 and WinRT development).
|
||||
- Visual Studio 2017 can be used, however it is recommended that you install
|
||||
the Visual C++ 2015 build tools. These build tools can be installed
|
||||
using VS 2017's installer. Be sure to also install the workload for
|
||||
"Universal Windows Platform development", its optional component, the
|
||||
"C++ Universal Windows Platform tools", and for UWP / Windows 10
|
||||
development, the "Windows 10 SDK (10.0.10240.0)". Please note that
|
||||
targeting UWP / Windows 10 apps from development machine(s) running
|
||||
earlier versions of Windows, such as Windows 7, is not always supported
|
||||
by Visual Studio, and you may get error(s) when attempting to do so.
|
||||
- Visual C++ 2012 can only build apps that target versions 8.0 of Windows,
|
||||
or Windows Phone. 8.0-targeted apps will run on devices running 8.1
|
||||
editions of Windows, however they will not be able to take advantage of
|
||||
8.1-specific features.
|
||||
- Visual C++ 2013 cannot create app projects that target Windows 8.0.
|
||||
Visual C++ 2013 Update 4, can create app projects for Windows Phone 8.0,
|
||||
Windows Phone 8.1, and Windows 8.1, but not Windows 8.0. An optional
|
||||
Visual Studio add-in, "Tools for Maintaining Store apps for Windows 8",
|
||||
allows Visual C++ 2013 to load and build Windows 8.0 projects that were
|
||||
created with Visual C++ 2012, so long as Visual C++ 2012 is installed
|
||||
on the same machine. More details on targeting different versions of
|
||||
Windows can found at the following web pages:
|
||||
- [Develop apps by using Visual Studio 2013](http://msdn.microsoft.com/en-us/library/windows/apps/br211384.aspx)
|
||||
- [To add the Tools for Maintaining Store apps for Windows 8](http://msdn.microsoft.com/en-us/library/windows/apps/dn263114.aspx#AddMaintenanceTools)
|
||||
* A valid Microsoft account - This requirement is not imposed by SDL, but
|
||||
rather by Microsoft's Visual C++ toolchain. This is required to launch or
|
||||
rather by Microsoft's Visual C++ toolchain. This is required to launch or
|
||||
debug apps.
|
||||
|
||||
|
||||
|
|
@ -57,7 +31,7 @@ Status
|
|||
Here is a rough list of what works, and what doesn't:
|
||||
|
||||
* What works:
|
||||
* compilation via Visual C++ 2012 through 2015
|
||||
* compilation via Visual C++ 2019.
|
||||
* compile-time platform detection for SDL programs. The C/C++ #define,
|
||||
`__WINRT__`, will be set to 1 (by SDL) when compiling for WinRT.
|
||||
* GPU-accelerated 2D rendering, via SDL_Renderer.
|
||||
|
|
@ -70,8 +44,8 @@ Here is a rough list of what works, and what doesn't:
|
|||
SDL_GetPerformanceFrequency(), etc.)
|
||||
* file I/O via SDL_RWops
|
||||
* mouse input (unsupported on Windows Phone)
|
||||
* audio, via SDL's WASAPI backend (if you want to record, your app must
|
||||
have "Microphone" capabilities enabled in its manifest, and the user must
|
||||
* audio, via SDL's WASAPI backend (if you want to record, your app must
|
||||
have "Microphone" capabilities enabled in its manifest, and the user must
|
||||
not have blocked access. Otherwise, capture devices will fail to work,
|
||||
presenting as a device disconnect shortly after opening it.)
|
||||
* .DLL file loading. Libraries *MUST* be packaged inside applications. Loading
|
||||
|
|
@ -81,7 +55,7 @@ Here is a rough list of what works, and what doesn't:
|
|||
SDL_GameController APIs, and is backed by Microsoft's XInput API. Please
|
||||
note, however, that Windows limits game-controller support in UWP apps to,
|
||||
"Xbox compatible controllers" (many controllers that work in Win32 apps,
|
||||
do not work in UWP, due to restrictions in UWP itself.)
|
||||
do not work in UWP, due to restrictions in UWP itself.)
|
||||
* multi-touch input
|
||||
* app events. SDL_APP_WILLENTER* and SDL_APP_DIDENTER* events get sent out as
|
||||
appropriate.
|
||||
|
|
@ -225,7 +199,7 @@ libraries such that, when the app is built:
|
|||
|
||||
1. each library gets built for the appropriate CPU architecture(s) and WinRT
|
||||
platform(s).
|
||||
2. each library's output, such as .dll files, get copied to the app's build
|
||||
2. each library's output, such as .dll files, get copied to the app's build
|
||||
output.
|
||||
|
||||
To set this up for SDL/WinRT, you'll need to run through the following steps:
|
||||
|
|
@ -234,13 +208,8 @@ To set this up for SDL/WinRT, you'll need to run through the following steps:
|
|||
"Solution Explorer")
|
||||
2. right click on your app's solution.
|
||||
3. navigate to "Add", then to "Existing Project..."
|
||||
4. find SDL/WinRT's Visual C++ project file and open it. Different project
|
||||
files exist for different WinRT platforms. All of them are in SDL's
|
||||
source distribution, in the following directories:
|
||||
* `VisualC-WinRT/UWP_VS2015/` - for Windows 10 / UWP apps
|
||||
* `VisualC-WinRT/WinPhone81_VS2013/` - for Windows Phone 8.1 apps
|
||||
* `VisualC-WinRT/WinRT80_VS2012/` - for Windows 8.0 apps
|
||||
* `VisualC-WinRT/WinRT81_VS2013/` - for Windows 8.1 apps
|
||||
4. find SDL/WinRT's Visual C++ project file and open it, in the `VisualC-WinRT`
|
||||
directory.
|
||||
5. once the project has been added, right-click on your app's project and
|
||||
select, "References..."
|
||||
6. click on the button titled, "Add New Reference..."
|
||||
|
|
@ -276,12 +245,12 @@ To change these settings:
|
|||
7. edit the "Additional Include Directories" setting, and add a path to SDL's
|
||||
"include" directory
|
||||
8. **Optional: to enable compilation of C code:** change the setting for
|
||||
"Consume Windows Runtime Extension" from "Yes (/ZW)" to "No". If you're
|
||||
working with a completely C++ based project, this step can usually be
|
||||
"Consume Windows Runtime Extension" from "Yes (/ZW)" to "No". If you're
|
||||
working with a completely C++ based project, this step can usually be
|
||||
omitted.
|
||||
9. **Optional: to disable precompiled headers (which can produce
|
||||
'stdafx.h'-related build errors, if setup incorrectly:** in the left-hand
|
||||
list, select "Precompiled Headers", then change the setting for "Precompiled
|
||||
9. **Optional: to disable precompiled headers (which can produce
|
||||
'stdafx.h'-related build errors, if setup incorrectly:** in the left-hand
|
||||
list, select "Precompiled Headers", then change the setting for "Precompiled
|
||||
Header" from "Use (/Yu)" to "Not Using Precompiled Headers".
|
||||
10. close the dialog, saving settings, by clicking the "OK" button
|
||||
|
||||
|
|
@ -298,7 +267,7 @@ A few files should be included directly in your app's MSVC project, specifically
|
|||
|
||||
To include these files for C/C++ projects:
|
||||
|
||||
1. right-click on your project (again, in Visual C++'s Solution Explorer),
|
||||
1. right-click on your project (again, in Visual C++'s Solution Explorer),
|
||||
navigate to "Add", then choose "Existing Item...".
|
||||
2. navigate to the directory containing SDL's source code, then into its
|
||||
subdirectory, 'src/main/winrt/'. Select, then add, the following files:
|
||||
|
|
@ -313,8 +282,8 @@ To include these files for C/C++ projects:
|
|||
7. change the setting for "Consume Windows Runtime Extension" to "Yes (/ZW)".
|
||||
8. click the OK button. This will close the dialog.
|
||||
|
||||
**NOTE: C++/CX compilation is currently required in at least one file of your
|
||||
app's project. This is to make sure that Visual C++'s linker builds a 'Windows
|
||||
**NOTE: C++/CX compilation is currently required in at least one file of your
|
||||
app's project. This is to make sure that Visual C++'s linker builds a 'Windows
|
||||
Metadata' file (.winmd) for your app. Not doing so can lead to build errors.**
|
||||
|
||||
For non-C++ projects, you will need to call SDL_WinRTRunApp from your language's
|
||||
|
|
@ -324,37 +293,37 @@ first <PropertyGroup> block in your Visual Studio project file.
|
|||
|
||||
### 6. Add app code and assets ###
|
||||
|
||||
At this point, you can add in SDL-specific source code. Be sure to include a
|
||||
C-style main function (ie: `int main(int argc, char *argv[])`). From there you
|
||||
should be able to create a single `SDL_Window` (WinRT apps can only have one
|
||||
window, at present), as well as an `SDL_Renderer`. Direct3D will be used to
|
||||
draw content. Events are received via SDL's usual event functions
|
||||
(`SDL_PollEvent`, etc.) If you have a set of existing source files and assets,
|
||||
you can start adding them to the project now. If not, or if you would like to
|
||||
make sure that you're setup correctly, some short and simple sample code is
|
||||
At this point, you can add in SDL-specific source code. Be sure to include a
|
||||
C-style main function (ie: `int main(int argc, char *argv[])`). From there you
|
||||
should be able to create a single `SDL_Window` (WinRT apps can only have one
|
||||
window, at present), as well as an `SDL_Renderer`. Direct3D will be used to
|
||||
draw content. Events are received via SDL's usual event functions
|
||||
(`SDL_PollEvent`, etc.) If you have a set of existing source files and assets,
|
||||
you can start adding them to the project now. If not, or if you would like to
|
||||
make sure that you're setup correctly, some short and simple sample code is
|
||||
provided below.
|
||||
|
||||
|
||||
#### 6.A. ... when creating a new app ####
|
||||
|
||||
If you are creating a new app (rather than porting an existing SDL-based app),
|
||||
or if you would just like a simple app to test SDL/WinRT with before trying to
|
||||
get existing code working, some working SDL/WinRT code is provided below. To
|
||||
If you are creating a new app (rather than porting an existing SDL-based app),
|
||||
or if you would just like a simple app to test SDL/WinRT with before trying to
|
||||
get existing code working, some working SDL/WinRT code is provided below. To
|
||||
set this up:
|
||||
|
||||
1. right click on your app's project
|
||||
2. select Add, then New Item. An "Add New Item" dialog will show up.
|
||||
3. from the left-hand list, choose "Visual C++"
|
||||
4. from the middle/main list, choose "C++ File (.cpp)"
|
||||
5. near the bottom of the dialog, next to "Name:", type in a name for your
|
||||
5. near the bottom of the dialog, next to "Name:", type in a name for your
|
||||
source file, such as, "main.cpp".
|
||||
6. click on the Add button. This will close the dialog, add the new file to
|
||||
6. click on the Add button. This will close the dialog, add the new file to
|
||||
your project, and open the file in Visual C++'s text editor.
|
||||
7. Copy and paste the following code into the new file, then save it.
|
||||
|
||||
```c
|
||||
#include <SDL.h>
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
SDL_DisplayMode mode;
|
||||
|
|
@ -362,7 +331,7 @@ int main(int argc, char **argv)
|
|||
SDL_Renderer * renderer = NULL;
|
||||
SDL_Event evt;
|
||||
SDL_bool keep_going = SDL_TRUE;
|
||||
|
||||
|
||||
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||
return 1;
|
||||
} else if (SDL_GetCurrentDisplayMode(0, &mode) != 0) {
|
||||
|
|
@ -370,14 +339,14 @@ int main(int argc, char **argv)
|
|||
} else if (SDL_CreateWindowAndRenderer(mode.w, mode.h, SDL_WINDOW_FULLSCREEN, &window, &renderer) != 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
while (keep_going) {
|
||||
while (SDL_PollEvent(&evt)) {
|
||||
if ((evt.type == SDL_KEYDOWN) && (evt.key.keysym.sym == SDLK_ESCAPE)) {
|
||||
keep_going = SDL_FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderPresent(renderer);
|
||||
|
|
@ -390,41 +359,41 @@ int main(int argc, char **argv)
|
|||
|
||||
#### 6.B. Adding code and assets ####
|
||||
|
||||
If you have existing code and assets that you'd like to add, you should be able
|
||||
If you have existing code and assets that you'd like to add, you should be able
|
||||
to add them now. The process for adding a set of files is as such.
|
||||
|
||||
1. right click on the app's project
|
||||
2. select Add, then click on "New Item..."
|
||||
3. open any source, header, or asset files as appropriate. Support for C and
|
||||
3. open any source, header, or asset files as appropriate. Support for C and
|
||||
C++ is available.
|
||||
|
||||
Do note that WinRT only supports a subset of the APIs that are available to
|
||||
Win32-based apps. Many portions of the Win32 API and the C runtime are not
|
||||
Do note that WinRT only supports a subset of the APIs that are available to
|
||||
Win32-based apps. Many portions of the Win32 API and the C runtime are not
|
||||
available.
|
||||
|
||||
A list of unsupported C APIs can be found at
|
||||
A list of unsupported C APIs can be found at
|
||||
<http://msdn.microsoft.com/en-us/library/windows/apps/jj606124.aspx>
|
||||
|
||||
General information on using the C runtime in WinRT can be found at
|
||||
General information on using the C runtime in WinRT can be found at
|
||||
<https://msdn.microsoft.com/en-us/library/hh972425.aspx>
|
||||
|
||||
A list of supported Win32 APIs for WinRT apps can be found at
|
||||
<http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx>. To note,
|
||||
the list of supported Win32 APIs for Windows Phone 8.0 is different.
|
||||
That list can be found at
|
||||
A list of supported Win32 APIs for WinRT apps can be found at
|
||||
<http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx>. To note,
|
||||
the list of supported Win32 APIs for Windows Phone 8.0 is different.
|
||||
That list can be found at
|
||||
<http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662956(v=vs.105).aspx>
|
||||
|
||||
|
||||
### 7. Build and run your app ###
|
||||
|
||||
Your app project should now be setup, and you should be ready to build your app.
|
||||
To run it on the local machine, open the Debug menu and choose "Start
|
||||
Debugging". This will build your app, then run your app full-screen. To switch
|
||||
out of your app, press the Windows key. Alternatively, you can choose to run
|
||||
your app in a window. To do this, before building and running your app, find
|
||||
the drop-down menu in Visual C++'s toolbar that says, "Local Machine". Expand
|
||||
this by clicking on the arrow on the right side of the list, then click on
|
||||
Simulator. Once you do that, any time you build and run the app, the app will
|
||||
Your app project should now be setup, and you should be ready to build your app.
|
||||
To run it on the local machine, open the Debug menu and choose "Start
|
||||
Debugging". This will build your app, then run your app full-screen. To switch
|
||||
out of your app, press the Windows key. Alternatively, you can choose to run
|
||||
your app in a window. To do this, before building and running your app, find
|
||||
the drop-down menu in Visual C++'s toolbar that says, "Local Machine". Expand
|
||||
this by clicking on the arrow on the right side of the list, then click on
|
||||
Simulator. Once you do that, any time you build and run the app, the app will
|
||||
launch in window, rather than full-screen.
|
||||
|
||||
|
||||
|
|
@ -437,37 +406,37 @@ Windows 8.x that ran primarily on ARM-based tablet computers.
|
|||
|
||||
To build and run the app on ARM-based, "Windows RT" devices, you'll need to:
|
||||
|
||||
- install Microsoft's "Remote Debugger" on the device. Visual C++ installs and
|
||||
- install Microsoft's "Remote Debugger" on the device. Visual C++ installs and
|
||||
debugs ARM-based apps via IP networks.
|
||||
- change a few options on the development machine, both to make sure it builds
|
||||
for ARM (rather than x86 or x64), and to make sure it knows how to find the
|
||||
- change a few options on the development machine, both to make sure it builds
|
||||
for ARM (rather than x86 or x64), and to make sure it knows how to find the
|
||||
Windows RT device (on the network).
|
||||
|
||||
Microsoft's Remote Debugger can be found at
|
||||
<https://msdn.microsoft.com/en-us/library/hh441469.aspx>. Please note
|
||||
that separate versions of this debugger exist for different versions of Visual
|
||||
Microsoft's Remote Debugger can be found at
|
||||
<https://msdn.microsoft.com/en-us/library/hh441469.aspx>. Please note
|
||||
that separate versions of this debugger exist for different versions of Visual
|
||||
C++, one each for MSVC 2015, 2013, and 2012.
|
||||
|
||||
To setup Visual C++ to launch your app on an ARM device:
|
||||
|
||||
1. make sure the Remote Debugger is running on your ARM device, and that it's on
|
||||
1. make sure the Remote Debugger is running on your ARM device, and that it's on
|
||||
the same IP network as your development machine.
|
||||
2. from Visual C++'s toolbar, find a drop-down menu that says, "Win32". Click
|
||||
2. from Visual C++'s toolbar, find a drop-down menu that says, "Win32". Click
|
||||
it, then change the value to "ARM".
|
||||
3. make sure Visual C++ knows the hostname or IP address of the ARM device. To
|
||||
3. make sure Visual C++ knows the hostname or IP address of the ARM device. To
|
||||
do this:
|
||||
1. open the app project's properties
|
||||
2. select "Debugging"
|
||||
3. next to "Machine Name", enter the hostname or IP address of the ARM
|
||||
3. next to "Machine Name", enter the hostname or IP address of the ARM
|
||||
device
|
||||
4. if, and only if, you've turned off authentication in the Remote Debugger,
|
||||
then change the setting for "Require Authentication" to No
|
||||
5. click "OK"
|
||||
4. build and run the app (from Visual C++). The first time you do this, a
|
||||
prompt will show up on the ARM device, asking for a Microsoft Account. You
|
||||
do, unfortunately, need to log in here, and will need to follow the
|
||||
subsequent registration steps in order to launch the app. After you do so,
|
||||
if the app didn't already launch, try relaunching it again from within Visual
|
||||
4. build and run the app (from Visual C++). The first time you do this, a
|
||||
prompt will show up on the ARM device, asking for a Microsoft Account. You
|
||||
do, unfortunately, need to log in here, and will need to follow the
|
||||
subsequent registration steps in order to launch the app. After you do so,
|
||||
if the app didn't already launch, try relaunching it again from within Visual
|
||||
C++.
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue