This commit is contained in:
Chuck Walbourn 2016-04-28 13:56:59 -07:00
Родитель c76f57c03e
Коммит b5967481c7
73 изменённых файлов: 675 добавлений и 615 удалений

44
Kits/ATGTK/ATGColors.h Normal file
Просмотреть файл

@ -0,0 +1,44 @@
//--------------------------------------------------------------------------------------
// File: ATGColors.h
//
// Definitions of the standard ATG color palette.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//-------------------------------------------------------------------------------------
#pragma once
#include <DirectXMath.h>
namespace ATG
{
namespace Colors
{
XMGLOBALCONST DirectX::XMVECTORF32 Background = { 0.254901975f, 0.254901975f, 0.254901975f, 1.f }; // #414141
XMGLOBALCONST DirectX::XMVECTORF32 Green = { 0.062745102f, 0.486274511f, 0.062745102f, 1.f }; // #107c10
XMGLOBALCONST DirectX::XMVECTORF32 Blue = { 0.019607844f, 0.372549027f, 0.803921580f, 1.f }; // #055fcd
XMGLOBALCONST DirectX::XMVECTORF32 Orange = { 0.764705896f, 0.176470593f, 0.019607844f, 1.f }; // #c32d05
XMGLOBALCONST DirectX::XMVECTORF32 DarkGrey = { 0.200000003f, 0.200000003f, 0.200000003f, 1.f }; // #333333
XMGLOBALCONST DirectX::XMVECTORF32 LightGrey = { 0.478431374f, 0.478431374f, 0.478431374f, 1.f }; // #7a7a7a
XMGLOBALCONST DirectX::XMVECTORF32 OffWhite = { 0.635294139f, 0.635294139f, 0.635294139f, 1.f }; // #a2a2a2
XMGLOBALCONST DirectX::XMVECTORF32 White = { 0.980392158f, 0.980392158f, 0.980392158f, 1.f }; // #fafafa
};
namespace ColorsLinear
{
XMGLOBALCONST DirectX::XMVECTORF32 Background = { 0.052860655f, 0.052860655f, 0.052860655f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 Green = { 0.005181516f, 0.201556236f, 0.005181516f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 Blue = { 0.001517635f, 0.114435382f, 0.610495627f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 Orange = { 0.545724571f, 0.026241219f, 0.001517635f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 DarkGrey = { 0.033104762f, 0.033104762f, 0.033104762f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 LightGrey = { 0.194617808f, 0.194617808f, 0.194617808f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 OffWhite = { 0.361306787f, 0.361306787f, 0.361306787f, 1.f };
XMGLOBALCONST DirectX::XMVECTORF32 White = { 0.955973506f, 0.955973506f, 0.955973506f, 1.f };
};
}

Просмотреть файл

@ -25,12 +25,12 @@ namespace DX
DPad = L'!',
RightThumb = L'\"',
View = L'#',
Guide = L'$',
Nexus = L'$',
Menu = L'%',
XButton = L'&',
YButton = L'\'',
BButton = L'(',
AButton = L')',
AButton = L'\'',
YButton = L'(',
BButton = L')',
RightShoulder = L'*',
RightTrigger = L'+',
LeftTrigger = L',',
@ -97,9 +97,9 @@ namespace DX
{
*button = static_cast<wchar_t>(ControllerFont::Menu);
}
else if (_wcsicmp(strBuffer, L"[Guide]") == 0)
else if (_wcsicmp(strBuffer, L"[Nexus]") == 0)
{
*button = static_cast<wchar_t>(ControllerFont::Guide);
*button = static_cast<wchar_t>(ControllerFont::Nexus);
}
else if (_wcsicmp(strBuffer, L"[RThumb]") == 0)
{

Просмотреть файл

@ -21,6 +21,7 @@
#include <fstream>
#include <vector>
namespace DX
{
inline std::vector<uint8_t> ReadData(_In_z_ const wchar_t* name)

Просмотреть файл

@ -15,11 +15,7 @@
#pragma once
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
#include <objbase.h>
#include <memory>
#include <mmreg.h>

Просмотреть файл

@ -368,7 +368,7 @@ struct ENTRYCOMPACT
}
}
return 0;
case MINIWAVEFORMAT::TAG_XMA:
if ( seekTable )
{
@ -1098,8 +1098,6 @@ HRESULT WaveBankReader::Impl::GetWaveData( uint32_t index, const uint8_t** pData
#else
const uint8_t* waveData = m_waveData.get();
#endif
{
}
if ( !waveData )
return E_FAIL;

Просмотреть файл

@ -15,11 +15,7 @@
#pragma once
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
#include <objbase.h>
#include <memory>
#include <mmreg.h>
@ -31,6 +27,10 @@ namespace DirectX
{
public:
WaveBankReader();
WaveBankReader(WaveBankReader const&) = delete;
WaveBankReader& operator= (WaveBankReader const&) = delete;
~WaveBankReader();
HRESULT Open( _In_z_ const wchar_t* szFileName );
@ -76,9 +76,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
WaveBankReader(WaveBankReader const&) DIRECTX_CTOR_DELETE
WaveBankReader& operator= (WaveBankReader const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -57,48 +57,14 @@
#include <DirectXMath.h>
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
#include <functional>
#include <memory>
#include <string>
#include <vector>
// VS 2010 doesn't support explicit calling convention for std::function
#ifndef DIRECTX_STD_CALLCONV
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#define DIRECTX_STD_CALLCONV
#else
#define DIRECTX_STD_CALLCONV __cdecl
#endif
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#pragma warning(push)
#pragma warning(disable : 4481)
// VS 2010 considers 'override' to be a extension, but it's part of C++11 as of VS 2012
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
class SoundEffectInstance;
//----------------------------------------------------------------------------------
@ -227,6 +193,10 @@ namespace DirectX
AudioEngine(AudioEngine&& moveFrom);
AudioEngine& operator= (AudioEngine&& moveFrom);
AudioEngine(AudioEngine const&) = delete;
AudioEngine& operator= (AudioEngine const&) = delete;
virtual ~AudioEngine();
bool __cdecl Update();
@ -310,10 +280,6 @@ namespace DirectX
// Private implementation.
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
AudioEngine(AudioEngine const&) DIRECTX_CTOR_DELETE
AudioEngine& operator= (AudioEngine const&) DIRECTX_CTOR_DELETE
};
@ -325,6 +291,10 @@ namespace DirectX
WaveBank(WaveBank&& moveFrom);
WaveBank& operator= (WaveBank&& moveFrom);
WaveBank(WaveBank const&) = delete;
WaveBank& operator= (WaveBank const&) = delete;
virtual ~WaveBank();
void __cdecl Play( int index );
@ -365,10 +335,6 @@ namespace DirectX
std::unique_ptr<Impl> pImpl;
// Prevent copying.
WaveBank(WaveBank const&) DIRECTX_CTOR_DELETE
WaveBank& operator= (WaveBank const&) DIRECTX_CTOR_DELETE
// Private interface
void __cdecl UnregisterInstance( _In_ SoundEffectInstance* instance );
@ -399,6 +365,10 @@ namespace DirectX
SoundEffect(SoundEffect&& moveFrom);
SoundEffect& operator= (SoundEffect&& moveFrom);
SoundEffect(SoundEffect const&) = delete;
SoundEffect& operator= (SoundEffect const&) = delete;
virtual ~SoundEffect();
void __cdecl Play();
@ -431,10 +401,6 @@ namespace DirectX
std::unique_ptr<Impl> pImpl;
// Prevent copying.
SoundEffect(SoundEffect const&) DIRECTX_CTOR_DELETE
SoundEffect& operator= (SoundEffect const&) DIRECTX_CTOR_DELETE
// Private interface
void __cdecl UnregisterInstance( _In_ SoundEffectInstance* instance );
@ -623,6 +589,10 @@ namespace DirectX
public:
SoundEffectInstance(SoundEffectInstance&& moveFrom);
SoundEffectInstance& operator= (SoundEffectInstance&& moveFrom);
SoundEffectInstance(SoundEffectInstance const&) = delete;
SoundEffectInstance& operator= (SoundEffectInstance const&) = delete;
virtual ~SoundEffectInstance();
void __cdecl Play( bool loop = false );
@ -655,10 +625,6 @@ namespace DirectX
friend std::unique_ptr<SoundEffectInstance> __cdecl SoundEffect::CreateInstance( SOUND_EFFECT_INSTANCE_FLAGS );
friend std::unique_ptr<SoundEffectInstance> __cdecl WaveBank::CreateInstance( int, SOUND_EFFECT_INSTANCE_FLAGS );
// Prevent copying.
SoundEffectInstance(SoundEffectInstance const&) DIRECTX_CTOR_DELETE
SoundEffectInstance& operator= (SoundEffectInstance const&) DIRECTX_CTOR_DELETE
};
@ -667,11 +633,15 @@ namespace DirectX
{
public:
DynamicSoundEffectInstance( _In_ AudioEngine* engine,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV(DynamicSoundEffectInstance*)> bufferNeeded,
_In_opt_ std::function<void __cdecl(DynamicSoundEffectInstance*)> bufferNeeded,
int sampleRate, int channels, int sampleBits = 16,
SOUND_EFFECT_INSTANCE_FLAGS flags = SoundEffectInstance_Default );
DynamicSoundEffectInstance(DynamicSoundEffectInstance&& moveFrom);
DynamicSoundEffectInstance& operator= (DynamicSoundEffectInstance&& moveFrom);
DynamicSoundEffectInstance(DynamicSoundEffectInstance const&) = delete;
DynamicSoundEffectInstance& operator= (DynamicSoundEffectInstance const&) = delete;
virtual ~DynamicSoundEffectInstance();
void __cdecl Play();
@ -708,11 +678,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
DynamicSoundEffectInstance(DynamicSoundEffectInstance const&) DIRECTX_CTOR_DELETE
DynamicSoundEffectInstance& operator= (DynamicSoundEffectInstance const&) DIRECTX_CTOR_DELETE
};
}
#pragma warning(pop)

Просмотреть файл

@ -19,17 +19,6 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <memory>
@ -41,6 +30,10 @@ namespace DirectX
explicit CommonStates(_In_ ID3D11Device* device);
CommonStates(CommonStates&& moveFrom);
CommonStates& operator= (CommonStates&& moveFrom);
CommonStates(CommonStates const&) = delete;
CommonStates& operator= (CommonStates const&) = delete;
virtual ~CommonStates();
// Blend states.
@ -73,9 +66,5 @@ namespace DirectX
class Impl;
std::shared_ptr<Impl> pImpl;
// Prevent copying.
CommonStates(CommonStates const&) DIRECTX_CTOR_DELETE
CommonStates& operator= (CommonStates const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -26,10 +26,8 @@
#include <d3d11_1.h>
#endif
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
namespace DirectX
{

Просмотреть файл

@ -25,12 +25,12 @@
#endif
#endif
#include <exception>
#ifndef IID_GRAPHICS_PPV_ARGS
#define IID_GRAPHICS_PPV_ARGS(x) IID_PPV_ARGS(x)
#endif
#pragma warning(push)
#pragma warning(disable : 4005)
#include <exception>
#include <stdint.h>
#pragma warning(pop)
//
// The core Direct3D headers provide the following helper C++ classes

Просмотреть файл

@ -19,32 +19,12 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <DirectXMath.h>
#include <memory>
#pragma warning(push)
#pragma warning(disable : 4481)
// VS 2010 considers 'override' to be a extension, but it's part of C++11 as of VS 2012
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
//----------------------------------------------------------------------------------
// Abstract interface representing any effect which can be applied onto a D3D device context.
class IEffect
@ -126,6 +106,10 @@ namespace DirectX
explicit BasicEffect(_In_ ID3D11Device* device);
BasicEffect(BasicEffect&& moveFrom);
BasicEffect& operator= (BasicEffect&& moveFrom);
BasicEffect(BasicEffect const&) = delete;
BasicEffect& operator= (BasicEffect const&) = delete;
virtual ~BasicEffect();
// IEffect methods.
@ -176,10 +160,6 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
BasicEffect(BasicEffect const&) DIRECTX_CTOR_DELETE
BasicEffect& operator= (BasicEffect const&) DIRECTX_CTOR_DELETE
};
@ -191,6 +171,10 @@ namespace DirectX
explicit AlphaTestEffect(_In_ ID3D11Device* device);
AlphaTestEffect(AlphaTestEffect&& moveFrom);
AlphaTestEffect& operator= (AlphaTestEffect&& moveFrom);
AlphaTestEffect(AlphaTestEffect const&) = delete;
AlphaTestEffect& operator= (AlphaTestEffect const&) = delete;
virtual ~AlphaTestEffect();
// IEffect methods.
@ -228,10 +212,6 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
AlphaTestEffect(AlphaTestEffect const&) DIRECTX_CTOR_DELETE
AlphaTestEffect& operator= (AlphaTestEffect const&) DIRECTX_CTOR_DELETE
};
@ -243,6 +223,10 @@ namespace DirectX
explicit DualTextureEffect(_In_ ID3D11Device* device);
DualTextureEffect(DualTextureEffect&& moveFrom);
DualTextureEffect& operator= (DualTextureEffect&& moveFrom);
DualTextureEffect(DualTextureEffect const&) = delete;
DualTextureEffect& operator= (DualTextureEffect const&) = delete;
~DualTextureEffect();
// IEffect methods.
@ -277,10 +261,6 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
DualTextureEffect(DualTextureEffect const&) DIRECTX_CTOR_DELETE
DualTextureEffect& operator= (DualTextureEffect const&) DIRECTX_CTOR_DELETE
};
@ -292,6 +272,10 @@ namespace DirectX
explicit EnvironmentMapEffect(_In_ ID3D11Device* device);
EnvironmentMapEffect(EnvironmentMapEffect&& moveFrom);
EnvironmentMapEffect& operator= (EnvironmentMapEffect&& moveFrom);
EnvironmentMapEffect(EnvironmentMapEffect const&) = delete;
EnvironmentMapEffect& operator= (EnvironmentMapEffect const&) = delete;
virtual ~EnvironmentMapEffect();
// IEffect methods.
@ -343,10 +327,6 @@ namespace DirectX
void __cdecl SetLightingEnabled(bool value) override;
void __cdecl SetPerPixelLighting(bool value) override;
void XM_CALLCONV SetLightSpecularColor(int whichLight, FXMVECTOR value) override;
// Prevent copying.
EnvironmentMapEffect(EnvironmentMapEffect const&) DIRECTX_CTOR_DELETE
EnvironmentMapEffect& operator= (EnvironmentMapEffect const&) DIRECTX_CTOR_DELETE
};
@ -358,6 +338,10 @@ namespace DirectX
explicit SkinnedEffect(_In_ ID3D11Device* device);
SkinnedEffect(SkinnedEffect&& moveFrom);
SkinnedEffect& operator= (SkinnedEffect&& moveFrom);
SkinnedEffect(SkinnedEffect const&) = delete;
SkinnedEffect& operator= (SkinnedEffect const&) = delete;
virtual ~SkinnedEffect();
// IEffect methods.
@ -411,10 +395,6 @@ namespace DirectX
// Unsupported interface method.
void __cdecl SetLightingEnabled(bool value) override;
// Prevent copying.
SkinnedEffect(SkinnedEffect const&) DIRECTX_CTOR_DELETE
SkinnedEffect& operator= (SkinnedEffect const&) DIRECTX_CTOR_DELETE
};
@ -428,6 +408,10 @@ namespace DirectX
_In_ bool enableSkinning = false );
DGSLEffect(DGSLEffect&& moveFrom);
DGSLEffect& operator= (DGSLEffect&& moveFrom);
DGSLEffect(DGSLEffect const&) = delete;
DGSLEffect& operator= (DGSLEffect const&) = delete;
virtual ~DGSLEffect();
// IEffect methods.
@ -492,10 +476,6 @@ namespace DirectX
// Unsupported interface methods.
void __cdecl SetPerPixelLighting(bool value) override;
// Prevent copying.
DGSLEffect(DGSLEffect const&) DIRECTX_CTOR_DELETE
DGSLEffect& operator= (DGSLEffect const&) DIRECTX_CTOR_DELETE
};
@ -538,6 +518,10 @@ namespace DirectX
explicit EffectFactory(_In_ ID3D11Device* device);
EffectFactory(EffectFactory&& moveFrom);
EffectFactory& operator= (EffectFactory&& moveFrom);
EffectFactory(EffectFactory const&) = delete;
EffectFactory& operator= (EffectFactory const&) = delete;
virtual ~EffectFactory();
// IEffectFactory methods.
@ -556,10 +540,6 @@ namespace DirectX
class Impl;
std::shared_ptr<Impl> pImpl;
// Prevent copying.
EffectFactory(EffectFactory const&) DIRECTX_CTOR_DELETE
EffectFactory& operator= (EffectFactory const&) DIRECTX_CTOR_DELETE
};
@ -570,6 +550,10 @@ namespace DirectX
explicit DGSLEffectFactory(_In_ ID3D11Device* device);
DGSLEffectFactory(DGSLEffectFactory&& moveFrom);
DGSLEffectFactory& operator= (DGSLEffectFactory&& moveFrom);
DGSLEffectFactory(DGSLEffectFactory const&) = delete;
DGSLEffectFactory& operator= (DGSLEffectFactory const&) = delete;
virtual ~DGSLEffectFactory();
// IEffectFactory methods.
@ -601,12 +585,6 @@ namespace DirectX
class Impl;
std::shared_ptr<Impl> pImpl;
// Prevent copying.
DGSLEffectFactory(DGSLEffectFactory const&) DIRECTX_CTOR_DELETE
DGSLEffectFactory& operator= (DGSLEffectFactory const&) DIRECTX_CTOR_DELETE
};
}
#pragma warning(pop)

Просмотреть файл

@ -25,24 +25,8 @@
#endif
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <memory>
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#include <intsafe.h>
#pragma warning(pop)
namespace DirectX
@ -53,6 +37,10 @@ namespace DirectX
GamePad();
GamePad(GamePad&& moveFrom);
GamePad& operator= (GamePad&& moveFrom);
GamePad(GamePad const&) = delete;
GamePad& operator=(GamePad const&) = delete;
virtual ~GamePad();
#if (_WIN32_WINNT >= 0x0A00 /*_WIN32_WINNT_WIN10*/ ) || defined(_XBOX_ONE)
@ -197,8 +185,17 @@ namespace DirectX
ButtonState leftShoulder;
ButtonState rightShoulder;
ButtonState back;
ButtonState start;
union
{
ButtonState back;
ButtonState view;
};
union
{
ButtonState start;
ButtonState menu;
};
ButtonState dpadUp;
ButtonState dpadDown;
@ -236,9 +233,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
GamePad(GamePad const&) DIRECTX_CTOR_DELETE
GamePad& operator=(GamePad const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -20,40 +20,17 @@
#include <memory>
#include <vector>
// VS 2010 doesn't support explicit calling convention for std::function
#ifndef DIRECTX_STD_CALLCONV
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#define DIRECTX_STD_CALLCONV
#else
#define DIRECTX_STD_CALLCONV __cdecl
#endif
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
class IEffect;
class GeometricPrimitive
{
public:
GeometricPrimitive(GeometricPrimitive const&) = delete;
GeometricPrimitive& operator= (GeometricPrimitive const&) = delete;
virtual ~GeometricPrimitive();
// Factory methods.
@ -86,11 +63,11 @@ namespace DirectX
// Draw the primitive.
void XM_CALLCONV Draw(FXMMATRIX world, CXMMATRIX view, CXMMATRIX projection, FXMVECTOR color = Colors::White, _In_opt_ ID3D11ShaderResourceView* texture = nullptr, bool wireframe = false,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomState = nullptr );
_In_opt_ std::function<void __cdecl()> setCustomState = nullptr );
// Draw the primitive using a custom effect.
void __cdecl Draw( _In_ IEffect* effect, _In_ ID3D11InputLayout* inputLayout, bool alpha = false, bool wireframe = false,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomState = nullptr );
_In_opt_ std::function<void __cdecl()> setCustomState = nullptr );
// Create input layout for drawing with a custom effect.
void __cdecl CreateInputLayout( _In_ IEffect* effect, _Outptr_ ID3D11InputLayout** inputLayout );
@ -102,9 +79,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
GeometricPrimitive(GeometricPrimitive const&) DIRECTX_CTOR_DELETE
GeometricPrimitive& operator= (GeometricPrimitive const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -19,17 +19,6 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <memory>
@ -45,6 +34,10 @@ namespace DirectX
#endif
GraphicsMemory(GraphicsMemory&& moveFrom);
GraphicsMemory& operator= (GraphicsMemory&& moveFrom);
GraphicsMemory(GraphicsMemory const&) = delete;
GraphicsMemory& operator=(GraphicsMemory const&) = delete;
virtual ~GraphicsMemory();
void* __cdecl Allocate(_In_opt_ ID3D11DeviceContext* context, size_t size, int alignment);
@ -59,9 +52,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
GraphicsMemory(GraphicsMemory const&) DIRECTX_CTOR_DELETE
GraphicsMemory& operator=(GraphicsMemory const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -13,23 +13,8 @@
#pragma once
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
#include <memory>
#include <stdint.h>
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
namespace ABI { namespace Windows { namespace UI { namespace Core { struct ICoreWindow; } } } }
@ -44,6 +29,10 @@ namespace DirectX
Keyboard();
Keyboard(Keyboard&& moveFrom);
Keyboard& operator= (Keyboard&& moveFrom);
Keyboard(Keyboard const&) = delete;
Keyboard& operator=(Keyboard const&) = delete;
virtual ~Keyboard();
enum Keys
@ -484,9 +473,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
Keyboard(Keyboard const&) DIRECTX_CTOR_DELETE
Keyboard& operator=(Keyboard const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -28,31 +28,13 @@
#include <string>
#include <vector>
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#include <intsafe.h>
#pragma warning(pop)
#include <wrl\client.h>
// VS 2010 doesn't support explicit calling convention for std::function
#ifndef DIRECTX_STD_CALLCONV
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#define DIRECTX_STD_CALLCONV
#else
#define DIRECTX_STD_CALLCONV __cdecl
#endif
#endif
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
class IEffect;
class IEffectFactory;
class CommonStates;
@ -83,7 +65,7 @@ namespace DirectX
// Draw mesh part with custom effect
void __cdecl Draw( _In_ ID3D11DeviceContext* deviceContext, _In_ IEffect* ieffect, _In_ ID3D11InputLayout* iinputLayout,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomState = nullptr ) const;
_In_opt_ std::function<void __cdecl()> setCustomState = nullptr ) const;
// Create input layout for drawing with a custom effect.
void __cdecl CreateInputLayout( _In_ ID3D11Device* d3dDevice, _In_ IEffect* ieffect, _Outptr_ ID3D11InputLayout** iinputLayout );
@ -115,7 +97,7 @@ namespace DirectX
// Draw the mesh
void XM_CALLCONV Draw( _In_ ID3D11DeviceContext* deviceContext, FXMMATRIX world, CXMMATRIX view, CXMMATRIX projection,
bool alpha = false, _In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomState = nullptr ) const;
bool alpha = false, _In_opt_ std::function<void __cdecl()> setCustomState = nullptr ) const;
};
@ -131,13 +113,13 @@ namespace DirectX
// Draw all the meshes in the model
void XM_CALLCONV Draw( _In_ ID3D11DeviceContext* deviceContext, CommonStates& states, FXMMATRIX world, CXMMATRIX view, CXMMATRIX projection,
bool wireframe = false, _In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomState = nullptr ) const;
bool wireframe = false, _In_opt_ std::function<void __cdecl()> setCustomState = nullptr ) const;
// Notify model that effects, parts list, or mesh list has changed
void __cdecl Modified() { mEffectCache.clear(); }
// Update all effects used by the model
void __cdecl UpdateEffects( _In_ std::function<void DIRECTX_STD_CALLCONV(IEffect*)> setEffect );
void __cdecl UpdateEffects( _In_ std::function<void __cdecl(IEffect*)> setEffect );
// Loads a model from a Visual Studio Starter Kit .CMO file
static std::unique_ptr<Model> __cdecl CreateFromCMO( _In_ ID3D11Device* d3dDevice, _In_reads_bytes_(dataSize) const uint8_t* meshData, size_t dataSize,

Просмотреть файл

@ -13,17 +13,6 @@
#pragma once
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <memory>
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
@ -39,6 +28,10 @@ namespace DirectX
Mouse();
Mouse(Mouse&& moveFrom);
Mouse& operator= (Mouse&& moveFrom);
Mouse(Mouse const&) = delete;
Mouse& operator=(Mouse const&) = delete;
virtual ~Mouse();
enum Mode
@ -121,9 +114,5 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
Mouse(Mouse const&) DIRECTX_CTOR_DELETE
Mouse& operator=(Mouse const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -19,24 +19,9 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <memory.h>
#include <memory>
#pragma warning(push)
#pragma warning(disable: 4005)
#include <stdint.h>
#pragma warning(pop)
namespace DirectX
@ -50,6 +35,10 @@ namespace DirectX
PrimitiveBatchBase(_In_ ID3D11DeviceContext* deviceContext, size_t maxIndices, size_t maxVertices, size_t vertexSize);
PrimitiveBatchBase(PrimitiveBatchBase&& moveFrom);
PrimitiveBatchBase& operator= (PrimitiveBatchBase&& moveFrom);
PrimitiveBatchBase(PrimitiveBatchBase const&) = delete;
PrimitiveBatchBase& operator= (PrimitiveBatchBase const&) = delete;
virtual ~PrimitiveBatchBase();
public:
@ -66,10 +55,6 @@ namespace DirectX
class Impl;
std::unique_ptr<Impl> pImpl;
// Prevent copying.
PrimitiveBatchBase(PrimitiveBatchBase const&) DIRECTX_CTOR_DELETE
PrimitiveBatchBase& operator= (PrimitiveBatchBase const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -29,21 +29,9 @@
#include <ocidl.h>
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
#include <functional>
#include <stdint.h>
// VS 2010 doesn't support explicit calling convention for std::function
#ifndef DIRECTX_STD_CALLCONV
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#define DIRECTX_STD_CALLCONV
#else
#define DIRECTX_STD_CALLCONV __cdecl
#endif
#endif
namespace DirectX
{
@ -58,7 +46,7 @@ namespace DirectX
_In_ REFGUID guidContainerFormat,
_In_z_ LPCWSTR fileName,
_In_opt_ const GUID* targetFormat = nullptr,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV(IPropertyBag2*)> setCustomProps = nullptr );
_In_opt_ std::function<void __cdecl(IPropertyBag2*)> setCustomProps = nullptr );
#endif
}

Просмотреть файл

@ -26,17 +26,81 @@
#include <DirectXPackedVector.h>
#include <DirectXCollision.h>
#if (defined(_XBOX_ONE) && defined(_TITLE)) || (defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP))
#include <Windows.Foundation.h>
#endif
namespace DirectX
{
namespace SimpleMath
{
struct Vector2;
struct Vector4;
struct Matrix;
struct Quaternion;
struct Plane;
//------------------------------------------------------------------------------
// 2D rectangle
struct Rectangle
{
long x;
long y;
long width;
long height;
// Creators
Rectangle() : x(0), y(0), width(0), height(0) {}
Rectangle(long ix, long iy, long iw, long ih) : x(ix), y(iy), width(iw), height(ih) {}
explicit Rectangle(const RECT& rct) : x(rct.left), y(rct.top), width(rct.right - rct.left), height(rct.bottom - rct.top) {}
operator RECT() { RECT rct; rct.left = x; rct.top = y; rct.right = (x + width); rct.bottom = (y + height); return rct; }
#if (defined(_XBOX_ONE) && defined(_TITLE)) || (defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP))
operator ABI::Windows::Foundation::Rect() { ABI::Windows::Foundation::Rect r; r.X = float(x); r.Y = float(y); r.Width = float(width); r.Height = float(height); return r; }
#ifdef __cplusplus_winrt
operator Windows::Foundation::Rect() { return Windows::Foundation::Rect(float(x), float(y), float(width), float(height)); }
#endif
#endif
// Comparison operators
bool operator == (const Rectangle& r) const { return (x == r.x) && (y == r.y) && (width == r.width) && (height == r.height); }
bool operator == (const RECT& rct) const { return (x == rct.left) && (y == rct.top) && (width == (rct.right - rct.left)) && (height == (rct.bottom - rct.top)); }
bool operator != (const Rectangle& r) const { return (x != r.x) || (y != r.y) || (width != r.width) || (height != r.height); }
bool operator != (const RECT& rct) const { return (x != rct.left) || (y != rct.top) || (width != (rct.right - rct.left)) || (height != (rct.bottom - rct.top)); }
// Assignment operators
Rectangle& operator=(_In_ const Rectangle& r) { x = r.x; y = r.y; width = r.width; height = r.height; return *this; }
Rectangle& operator=(_In_ const RECT& rct) { x = rct.left; y = rct.top; width = (rct.right - rct.left); height = (rct.bottom - rct.top); return *this; }
// Rectangle operations
Vector2 Location() const;
Vector2 Center() const;
bool IsEmpty() const { return (width == 0 && height == 0 && x == 0 && y == 0); }
bool Contains(long ix, long iy) const { return (x <= ix) && (ix < (x + width)) && (y <= iy) && (iy < (y + height)); }
bool Contains(const Vector2& point) const;
bool Contains(const Rectangle& r) const { return (x <= r.x) && ((r.x + r.width) <= (x + width)) && (y <= r.y) && ((r.y + r.height) <= (y + height)); }
bool Contains(const RECT& rct) const { return (x <= rct.left) && (rct.right <= (x + width)) && (y <= rct.top) && (rct.bottom <= (y + height)); }
void Inflate(long horizAmount, long vertAmount);
bool Intersects(const Rectangle& r) const { return (r.x < (x + width)) && (x < (r.x + r.width)) && (r.y < (y + height)) && (y < (r.y + r.height)); }
bool Intersects(const RECT& rct) const { return (rct.left < (x + width)) && (x < rct.right) && (rct.top < (y + height)) && (y < rct.bottom); }
void Offset(long ox, long oy) { x += ox; y += oy; }
// Static functions
static Rectangle Intersect(const Rectangle& ra, const Rectangle& rb);
static RECT Intersect(const RECT& rcta, const RECT& rctb);
static Rectangle Union(const Rectangle& ra, const Rectangle& rb);
static RECT Union(const RECT& rcta, const RECT& rctb);
};
//------------------------------------------------------------------------------
// 2D vector
struct Vector2 : public XMFLOAT2
@ -804,6 +868,17 @@ public:
namespace std
{
template<> struct less<DirectX::SimpleMath::Rectangle>
{
bool operator()(const DirectX::SimpleMath::Rectangle& r1, const DirectX::SimpleMath::Rectangle& r2) const
{
return ((r1.x < r2.x)
|| ((r1.x == r2.x) && (r1.y < r2.y))
|| ((r1.x == r2.x) && (r1.y == r2.y) && (r1.width < r2.width))
|| ((r1.x == r2.x) && (r1.y == r2.y) && (r1.width == r2.width) && (r1.height < r2.height)));
}
};
template<> struct less<DirectX::SimpleMath::Vector2>
{
bool operator()(const DirectX::SimpleMath::Vector2& V1, const DirectX::SimpleMath::Vector2& V2) const

Просмотреть файл

@ -13,6 +13,137 @@
#pragma once
/****************************************************************************
*
* Rectangle
*
****************************************************************************/
//------------------------------------------------------------------------------
// Rectangle operations
//------------------------------------------------------------------------------
inline Vector2 Rectangle::Location() const
{
return Vector2(float(x), float(y));
}
inline Vector2 Rectangle::Center() const
{
return Vector2(float(x) + float(width / 2.f), float(y) + float(height / 2.f));
}
inline bool Rectangle::Contains(const Vector2& point) const
{
return (float(x) <= point.x) && (point.x < float(x + width)) && (float(y) <= point.y) && (point.y < float(y + height));
}
inline void Rectangle::Inflate(long horizAmount, long vertAmount)
{
x -= horizAmount;
y -= vertAmount;
width += horizAmount;
height += vertAmount;
}
//------------------------------------------------------------------------------
// Static functions
//------------------------------------------------------------------------------
inline Rectangle Rectangle::Intersect(const Rectangle& ra, const Rectangle& rb)
{
long righta = ra.x + ra.width;
long rightb = rb.x + rb.width;
long bottoma = ra.y + ra.height;
long bottomb = rb.y + rb.height;
long maxX = ra.x > rb.x ? ra.x : rb.x;
long maxY = ra.y > rb.y ? ra.y : rb.y;
long minRight = righta < rightb ? righta : rightb;
long minBottom = bottoma < bottomb ? bottoma : bottomb;
Rectangle result;
if ((minRight > maxX) && (minBottom > maxY))
{
result.x = maxX;
result.y = maxY;
result.width = minRight - maxX;
result.height = minBottom - maxY;
}
else
{
result.x = 0;
result.y = 0;
result.width = 0;
result.height = 0;
}
return result;
}
inline RECT Rectangle::Intersect(const RECT& rcta, const RECT& rctb)
{
long maxX = rcta.left > rctb.left ? rcta.left : rctb.left;
long maxY = rcta.top > rctb.top ? rcta.top : rctb.top;
long minRight = rcta.right < rctb.right ? rcta.right : rctb.right;
long minBottom = rcta.bottom < rctb.bottom ? rcta.bottom : rctb.bottom;
RECT result;
if ((minRight > maxX) && (minBottom > maxY))
{
result.left = maxX;
result.top = maxY;
result.right = minRight;
result.bottom = minBottom;
}
else
{
result.left = 0;
result.top = 0;
result.right = 0;
result.bottom = 0;
}
return result;
}
inline Rectangle Rectangle::Union(const Rectangle& ra, const Rectangle& rb)
{
long righta = ra.x + ra.width;
long rightb = rb.x + rb.width;
long bottoma = ra.y + ra.height;
long bottomb = rb.y + rb.height;
int minX = ra.x < rb.x ? ra.x : rb.x;
int minY = ra.y < rb.y ? ra.y : rb.y;
int maxRight = righta > rightb ? righta : rightb;
int maxBottom = bottoma > bottomb ? bottoma : bottomb;
Rectangle result;
result.x = minX;
result.y = minY;
result.width = maxRight - minX;
result.height = maxBottom - minY;
return result;
}
inline RECT Rectangle::Union(const RECT& rcta, const RECT& rctb)
{
RECT result;
result.left = rcta.left < rctb.left ? rcta.left : rctb.left;
result.top = rcta.top < rctb.top ? rcta.top : rctb.top;
result.right = rcta.right > rctb.right ? rcta.right : rctb.right;
result.bottom = rcta.bottom > rctb.bottom ? rcta.bottom : rctb.bottom;
return result;
}
/****************************************************************************
*
* Vector2

Просмотреть файл

@ -19,39 +19,14 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <DirectXMath.h>
#include <DirectXColors.h>
#include <functional>
#include <memory>
// VS 2010 doesn't support explicit calling convention for std::function
#ifndef DIRECTX_STD_CALLCONV
#if defined(_MSC_VER) && (_MSC_VER < 1700)
#define DIRECTX_STD_CALLCONV
#else
#define DIRECTX_STD_CALLCONV __cdecl
#endif
#endif
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
enum SpriteSortMode
{
SpriteSortMode_Deferred,
@ -77,11 +52,15 @@ namespace DirectX
explicit SpriteBatch(_In_ ID3D11DeviceContext* deviceContext);
SpriteBatch(SpriteBatch&& moveFrom);
SpriteBatch& operator= (SpriteBatch&& moveFrom);
SpriteBatch(SpriteBatch const&) = delete;
SpriteBatch& operator= (SpriteBatch const&) = delete;
virtual ~SpriteBatch();
// Begin/End a batch of sprite drawing operations.
void XM_CALLCONV Begin(SpriteSortMode sortMode = SpriteSortMode_Deferred, _In_opt_ ID3D11BlendState* blendState = nullptr, _In_opt_ ID3D11SamplerState* samplerState = nullptr, _In_opt_ ID3D11DepthStencilState* depthStencilState = nullptr, _In_opt_ ID3D11RasterizerState* rasterizerState = nullptr,
_In_opt_ std::function<void DIRECTX_STD_CALLCONV()> setCustomShaders = nullptr, FXMMATRIX transformMatrix = MatrixIdentity);
_In_opt_ std::function<void __cdecl()> setCustomShaders = nullptr, FXMMATRIX transformMatrix = MatrixIdentity);
void __cdecl End();
// Draw overloads specifying position, origin and scale as XMFLOAT2.
@ -113,9 +92,5 @@ namespace DirectX
static const XMMATRIX MatrixIdentity;
static const XMFLOAT2 Float2Zero;
// Prevent copying.
SpriteBatch(SpriteBatch const&) DIRECTX_CTOR_DELETE
SpriteBatch& operator= (SpriteBatch const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -15,17 +15,6 @@
#include "SpriteBatch.h"
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
namespace DirectX
{
@ -40,6 +29,10 @@ namespace DirectX
SpriteFont(SpriteFont&& moveFrom);
SpriteFont& operator= (SpriteFont&& moveFrom);
SpriteFont(SpriteFont const&) = delete;
SpriteFont& operator= (SpriteFont const&) = delete;
virtual ~SpriteFont();
void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ wchar_t const* text, XMFLOAT2 const& position, FXMVECTOR color = Colors::White, float rotation = 0, XMFLOAT2 const& origin = Float2Zero, float scale = 1, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const;
@ -81,9 +74,5 @@ namespace DirectX
std::unique_ptr<Impl> pImpl;
static const XMFLOAT2 Float2Zero;
// Prevent copying.
SpriteFont(SpriteFont const&) DIRECTX_CTOR_DELETE
SpriteFont& operator= (SpriteFont const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -19,32 +19,15 @@
#include <d3d11_1.h>
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#include <DirectXMath.h>
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
// Vertex struct holding position and color information.
struct VertexPositionColor
{
VertexPositionColor() DIRECTX_CTOR_DEFAULT
VertexPositionColor() = default;
VertexPositionColor(XMFLOAT3 const& position, XMFLOAT4 const& color)
: position(position),
@ -68,7 +51,7 @@ namespace DirectX
// Vertex struct holding position and texture mapping information.
struct VertexPositionTexture
{
VertexPositionTexture() DIRECTX_CTOR_DEFAULT
VertexPositionTexture() = default;
VertexPositionTexture(XMFLOAT3 const& position, XMFLOAT2 const& textureCoordinate)
: position(position),
@ -92,7 +75,7 @@ namespace DirectX
// Vertex struct holding position and normal vector.
struct VertexPositionNormal
{
VertexPositionNormal() DIRECTX_CTOR_DEFAULT
VertexPositionNormal() = default;
VertexPositionNormal(XMFLOAT3 const& position, XMFLOAT3 const& normal)
: position(position),
@ -116,7 +99,7 @@ namespace DirectX
// Vertex struct holding position, color, and texture mapping information.
struct VertexPositionColorTexture
{
VertexPositionColorTexture() DIRECTX_CTOR_DEFAULT
VertexPositionColorTexture() = default;
VertexPositionColorTexture(XMFLOAT3 const& position, XMFLOAT4 const& color, XMFLOAT2 const& textureCoordinate)
: position(position),
@ -143,7 +126,7 @@ namespace DirectX
// Vertex struct holding position, normal vector, and color information.
struct VertexPositionNormalColor
{
VertexPositionNormalColor() DIRECTX_CTOR_DEFAULT
VertexPositionNormalColor() = default;
VertexPositionNormalColor(XMFLOAT3 const& position, XMFLOAT3 const& normal, XMFLOAT4 const& color)
: position(position),
@ -170,7 +153,7 @@ namespace DirectX
// Vertex struct holding position, normal vector, and texture mapping information.
struct VertexPositionNormalTexture
{
VertexPositionNormalTexture() DIRECTX_CTOR_DEFAULT
VertexPositionNormalTexture() = default;
VertexPositionNormalTexture(XMFLOAT3 const& position, XMFLOAT3 const& normal, XMFLOAT2 const& textureCoordinate)
: position(position),
@ -197,7 +180,7 @@ namespace DirectX
// Vertex struct holding position, normal vector, color, and texture mapping information.
struct VertexPositionNormalColorTexture
{
VertexPositionNormalColorTexture() DIRECTX_CTOR_DEFAULT
VertexPositionNormalColorTexture() = default;
VertexPositionNormalColorTexture(XMFLOAT3 const& position, XMFLOAT3 const& normal, XMFLOAT4 const& color, XMFLOAT2 const& textureCoordinate)
: position(position),
@ -228,7 +211,7 @@ namespace DirectX
// tangent, color (RGBA), and texture mapping information
struct VertexPositionNormalTangentColorTexture
{
VertexPositionNormalTangentColorTexture() DIRECTX_CTOR_DEFAULT
VertexPositionNormalTangentColorTexture() = default;
XMFLOAT3 position;
XMFLOAT3 normal;
@ -285,7 +268,7 @@ namespace DirectX
// tangent, color (RGBA), texture mapping information, and skinning weights
struct VertexPositionNormalTangentColorTextureSkinning : public VertexPositionNormalTangentColorTexture
{
VertexPositionNormalTangentColorTextureSkinning() DIRECTX_CTOR_DEFAULT
VertexPositionNormalTangentColorTextureSkinning() = default;
uint32_t indices;
uint32_t weights;

Просмотреть файл

@ -37,10 +37,8 @@
#include <d3d11_1.h>
#endif
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
namespace DirectX
{

Просмотреть файл

@ -4,16 +4,16 @@ DirectXTK - the DirectX Tool Kit
Copyright (c) Microsoft Corporation. All rights reserved.
February 23, 2016
April 26, 2016
This package contains the "DirectX Tool Kit", a collection of helper classes for
writing Direct3D 11 C++ code for universal Windows apps for Windows 10,
Windows Store apps, Windows phone 8.x applications, Xbox One exclusive apps,
Xbox One hub apps, Windows 8.x Win32 desktop applications, Windows 7 applications,
and Windows Vista Direct3D 11.0 applications.
writing Direct3D 11 C++ code for Universal Windows Platform (UWP) apps for Windows 10,
Windows Store apps, Windows phone 8.1 applications, Xbox One exclusive apps,
Windows 8.x Win32 desktop applications, Windows 7 applications, and
Windows Vista Direct3D 11.0 applications.
This code is designed to build with Visual Studio 2013 or 2015. It is recommended that you
make use of VS 2013 Update 5, VS 2015 Update 1, and Windows 7 Service Pack 1 or later.
make use of VS 2013 Update 5, VS 2015 Update 2, and Windows 7 Service Pack 1 or later.
These components are designed to work without requiring any content from the DirectX SDK. For details,
see "Where is the DirectX SDK?" <http://msdn.microsoft.com/en-us/library/ee663275.aspx>.
@ -23,8 +23,8 @@ Inc\
Audio.h - low-level audio API using XAudio2 (DirectXTK for Audio public header)
CommonStates.h - factory providing commonly used D3D state objects
DirectXHelpers.h - misc C++ helpers for D3D programming
DDSTextureLoader.h - light-weight DDS file texture loader
DirectXHelpers.h - misc C++ helpers for D3D programming
Effects.h - set of built-in shaders for common rendering tasks
GamePad.h - gamepad controller helper using XInput
GeometricPrimitive.h - draws basic shapes such as cubes and spheres
@ -74,6 +74,14 @@ Note: Xbox One exclusive apps developers using the Xbox One XDK need to generate
RELEASE HISTORY
---------------
April 26, 2016
Added Rectangle class to SimpleMath
Fix for SDKMESH loader when loading models with 'extra' texture coordinate sets
Made SimpleMath's Viewport ComputeTitleSafeArea less conservative
Added view/menu alises to GamePad::ButtonStateTracker for Xbox One Controller naming
Retired Windows phone 8.0 projects and obsolete adapter code
Minor code and project file cleanup
February 23, 2016
Fixed width computation bug in SpriteFont::MeasureString
Fix to clean up partial or zero-length image files on failed write

Просмотреть файл

@ -15,6 +15,7 @@
#include <memory>
#include <exception>
#include <stdexcept>
#include <type_traits>
#include "PlatformHelpers.h"
@ -29,6 +30,8 @@ namespace DirectX
explicit BinaryReader(_In_z_ wchar_t const* fileName);
BinaryReader(_In_reads_bytes_(dataSize) uint8_t const* dataBlob, size_t dataSize);
BinaryReader(BinaryReader const&) = delete;
BinaryReader& operator= (BinaryReader const&) = delete;
// Reads a single value.
template<typename T> T const& Read()
@ -44,6 +47,9 @@ namespace DirectX
uint8_t const* newPos = mPos + sizeof(T) * elementCount;
if (newPos < mPos)
throw std::overflow_error("ReadArray");
if (newPos > mEnd)
throw std::exception("End of file");
@ -65,10 +71,5 @@ namespace DirectX
uint8_t const* mEnd;
std::unique_ptr<uint8_t[]> mOwnedData;
// Prevent copying.
BinaryReader(BinaryReader const&) DIRECTX_CTOR_DELETE
BinaryReader& operator= (BinaryReader const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -26,12 +26,14 @@ namespace DirectX
{
public:
// Constructor.
ConstantBuffer() DIRECTX_CTOR_DEFAULT
ConstantBuffer() = default;
explicit ConstantBuffer(_In_ ID3D11Device* device)
{
Create( device );
}
ConstantBuffer(ConstantBuffer const&) = delete;
ConstantBuffer& operator= (ConstantBuffer const&) = delete;
#if defined(_XBOX_ONE) && defined(_TITLE)
void Create(_In_ ID3D11Device* device)
@ -109,10 +111,5 @@ namespace DirectX
private:
// The underlying D3D object.
Microsoft::WRL::ComPtr<ID3D11Buffer> mConstantBuffer;
// Prevent copying.
ConstantBuffer(ConstantBuffer const&) DIRECTX_CTOR_DELETE
ConstantBuffer& operator= (ConstantBuffer const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -439,6 +439,8 @@ void DGSLEffectFactory::Impl::CreatePixelShader( const WCHAR* name, ID3D11PixelS
ThrowIfFailed(
device->CreatePixelShader( data.get(), dataSize, nullptr, pixelShader ) );
_Analysis_assume_(*pixelShader != 0);
if ( mSharing && *name && it == mShaderCache.end() )
{
std::lock_guard<std::mutex> lock(mutex);

Просмотреть файл

@ -100,6 +100,8 @@ namespace
device->CreateBuffer(&bufferDesc, &dataDesc, pBuffer)
);
_Analysis_assume_(*pBuffer != 0);
SetDebugObjectName(*pBuffer, "DirectXTK:GeometricPrimitive");
}
@ -121,6 +123,8 @@ namespace
pInputLayout)
);
_Analysis_assume_(*pInputLayout != 0);
SetDebugObjectName(*pInputLayout, "DirectXTK:GeometricPrimitive");
}
}
@ -181,12 +185,12 @@ GeometricPrimitive::Impl::SharedResources::SharedResources(_In_ ID3D11DeviceCont
deviceContext->GetDevice(&device);
// Create the BasicEffect.
effect.reset(new BasicEffect(device.Get()));
effect = std::make_unique<BasicEffect>(device.Get());
effect->EnableDefaultLighting();
// Create state objects.
stateObjects.reset(new CommonStates(device.Get()));
stateObjects = std::make_unique<CommonStates>(device.Get());
// Create input layouts.
effect->SetTextureEnabled(true);

Просмотреть файл

@ -50,11 +50,11 @@ namespace
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
//======================================================================================
// Windows Store or universal Windows app implementation
// Windows Store or Universal Windows Platform (UWP) app implementation
//======================================================================================
//
// For a Windows Store app or universal Windows app, add the following:
// For a Windows Store app or Universal Windows Platform (UWP) app, add the following:
//
// void App::SetWindow(CoreWindow^ window )
// {

Просмотреть файл

@ -95,6 +95,8 @@ void ModelMeshPart::CreateInputLayout( ID3D11Device* d3dDevice, IEffect* ieffect
shaderByteCode, byteCodeLength,
iinputLayout )
);
_Analysis_assume_(*iinputLayout != 0);
}

Просмотреть файл

@ -207,6 +207,8 @@ static void CreateInputLayout(_In_ ID3D11Device* device, IEffect* effect, _Out_
);
}
_Analysis_assume_(*pInputLayout != 0);
SetDebugObjectName(*pInputLayout, "ModelCMO");
}

Просмотреть файл

@ -389,6 +389,12 @@ static void LoadMaterial( _In_ const DXUT::SDKMESH_MATERIAL& mh,
WCHAR txtName2[ DXUT::MAX_TEXTURE_NAME ];
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, mh.SpecularTexture, -1, txtName2, DXUT::MAX_TEXTURE_NAME );
if ( !mh.SpecularTexture[0] && enableDualTexture )
{
DebugTrace("WARNING: Material '%s' has multiple texture coords but not multiple textures\n", mh.Name);
enableDualTexture = false;
}
EffectFactory::EffectInfo info;
info.name = matName;
info.perVertexColor = perVertexColor;
@ -627,6 +633,8 @@ static void CreateInputLayout(_In_ ID3D11Device* device, _In_ IEffect* effect, s
pInputLayout)
);
_Analysis_assume_(*pInputLayout != 0);
SetDebugObjectName(*pInputLayout, "ModelSDKMESH");
}

Просмотреть файл

@ -23,11 +23,11 @@ using Microsoft::WRL::ComPtr;
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
//======================================================================================
// Windows Store or universal Windows app implementation
// Windows Store or Universal Windows Platform (UWP) app implementation
//======================================================================================
//
// For a Windows Store app or universal Windows app, add the following to your existing
// For a Windows Store app or Universal Windows Platform (UWP) app, add the following to your existing
// application methods:
//
// void App::SetWindow(CoreWindow^ window )

Просмотреть файл

@ -13,7 +13,7 @@
#pragma once
#pragma warning(disable : 4324 4481)
#pragma warning(disable : 4324)
#include <exception>
#include <memory>
@ -80,9 +80,9 @@ namespace DirectX
}
#if (defined(_MSC_VER) && (_MSC_VER < 1610)) || defined(DIRECTX_EMULATE_MUTEX)
#ifdef DIRECTX_EMULATE_MUTEX
// Emulate the C++0x mutex and lock_guard types when building with Visual Studio versions < 2012.
// Emulate the C++0x mutex and lock_guard types when building with Visual Studio CRT versions < 2012.
namespace std
{
class mutex
@ -128,8 +128,25 @@ namespace std
};
}
#else // _MSC_VER < 1610
#else
#include <mutex>
#endif
#ifdef DIRECTX_EMULATE_MAKE_UNIQUE
// Emulate make_unique when building with Visual Studio CRT versions < 2012.
namespace std
{
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
}
#endif

Просмотреть файл

@ -100,6 +100,8 @@ static void CreateBuffer(_In_ ID3D11Device* device, size_t bufferSize, D3D11_BIN
device->CreateBuffer(&desc, nullptr, pBuffer)
);
_Analysis_assume_(*pBuffer != 0);
SetDebugObjectName(*pBuffer, "DirectXTK:PrimitiveBatch");
}
#endif

Просмотреть файл

@ -29,14 +29,11 @@
#if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (_WIN32_WINNT > _WIN32_WINNT_WIN8)
// VS 2010's stdint.h conflicts with intsafe.h
#pragma warning(push)
#pragma warning(disable : 4005)
#include <wincodec.h>
#pragma warning(pop)
#endif
#include "ScreenGrab.h"
#include "DirectXHelpers.h"
#include "dds.h"
#include "PlatformHelpers.h"
@ -50,6 +47,10 @@ namespace
{
public:
auto_delete_file(HANDLE hFile) : m_handle(hFile) {}
auto_delete_file(const auto_delete_file&) = delete;
auto_delete_file& operator=(const auto_delete_file&) = delete;
~auto_delete_file()
{
if (m_handle)
@ -64,9 +65,6 @@ namespace
private:
HANDLE m_handle;
auto_delete_file(const auto_delete_file&) DIRECTX_CTOR_DELETE;
auto_delete_file& operator=(const auto_delete_file&) DIRECTX_CTOR_DELETE;
};
#if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (_WIN32_WINNT > _WIN32_WINNT_WIN8)
@ -75,6 +73,10 @@ namespace
{
public:
auto_delete_file_wic(ComPtr<IWICStream>& hFile, LPCWSTR szFile) : m_handle(hFile), m_filename(szFile) {}
auto_delete_file_wic(const auto_delete_file_wic&) = delete;
auto_delete_file_wic& operator=(const auto_delete_file_wic&) = delete;
~auto_delete_file_wic()
{
if (m_filename)
@ -89,9 +91,6 @@ namespace
private:
LPCWSTR m_filename;
ComPtr<IWICStream>& m_handle;
auto_delete_file_wic(const auto_delete_file_wic&) DIRECTX_CTOR_DELETE;
auto_delete_file_wic& operator=(const auto_delete_file_wic&) DIRECTX_CTOR_DELETE;
};
#endif
@ -489,11 +488,7 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext,
return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED );
ComPtr<ID3D11Texture2D> pTexture;
#if defined(_XBOX_ONE) && defined(_TITLE)
HRESULT hr = pSource->QueryInterface(IID_GRAPHICS_PPV_ARGS(pTexture.GetAddressOf()));
#else
HRESULT hr = pSource->QueryInterface(IID_PPV_ARGS(pTexture.GetAddressOf()));
#endif
if ( FAILED(hr) )
return hr;

Просмотреть файл

@ -33,6 +33,8 @@ namespace DirectX
: mResourceMap(std::make_shared<ResourceMap>())
{ }
SharedResourcePool(SharedResourcePool const&) = delete;
SharedResourcePool& operator= (SharedResourcePool const&) = delete;
// Allocates or looks up the shared TData instance for the specified key.
std::shared_ptr<TData> DemandCreate(TKey key)
@ -99,10 +101,5 @@ namespace DirectX
TKey mKey;
std::shared_ptr<ResourceMap> mResourceMap;
};
// Prevent copying.
SharedResourcePool(SharedResourcePool const&) DIRECTX_CTOR_DELETE
SharedResourcePool& operator= (SharedResourcePool const&) DIRECTX_CTOR_DELETE
};
}

Просмотреть файл

@ -167,8 +167,8 @@ RECT DirectX::SimpleMath::Viewport::ComputeDisplayArea(DXGI_SCALING scaling, UIN
RECT DirectX::SimpleMath::Viewport::ComputeTitleSafeArea(UINT backBufferWidth, UINT backBufferHeight)
{
float safew = (float(backBufferWidth) + 9.f) / 10.f;
float safeh = (float(backBufferHeight) + 9.f) / 10.f;
float safew = (float(backBufferWidth) + 19.f) / 20.f;
float safeh = (float(backBufferHeight) + 19.f) / 20.f;
RECT rct;
rct.left = static_cast<LONG>(safew);

Просмотреть файл

@ -221,7 +221,7 @@ SpriteFont::SpriteFont(_In_ ID3D11Device* device, _In_z_ wchar_t const* fileName
{
BinaryReader reader(fileName);
pImpl.reset(new Impl(device, &reader));
pImpl = std::make_unique<Impl>(device, &reader);
}
@ -230,7 +230,7 @@ SpriteFont::SpriteFont(_In_ ID3D11Device* device, _In_reads_bytes_(dataSize) uin
{
BinaryReader reader(dataBlob, dataSize);
pImpl.reset(new Impl(device, &reader));
pImpl = std::make_unique<Impl>(device, &reader);
}

Просмотреть файл

@ -30,11 +30,7 @@
#include "pch.h"
// VS 2010's stdint.h conflicts with intsafe.h
#pragma warning(push)
#pragma warning(disable : 4005)
#include <wincodec.h>
#pragma warning(pop)
#include "WICTextureLoader.h"

Просмотреть файл

@ -27,11 +27,8 @@
#include <dxgiformat.h>
#endif
// VS 2010's stdint.h conflicts with intsafe.h
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#pragma warning(pop)
namespace DirectX
{

Просмотреть файл

@ -13,29 +13,24 @@
#pragma once
#if !defined(WIN32_LEAN_AND_MEAN)
#pragma warning(push)
#pragma warning(disable : 4005)
#define WIN32_LEAN_AND_MEAN
#endif
#if !defined(NOMINMAX)
#define NOMINMAX
#endif
#define NODRAWTEXT
#define NOGDI
#define NOBITMAP
#define NOMCX
#define NOSERVICE
#define NOHELP
#pragma warning(pop)
#include <windows.h>
#ifndef _WIN32_WINNT_WIN10
#define _WIN32_WINNT_WIN10 0x0A00
#endif
// VS 2010/2012 do not support =default =delete
#ifndef DIRECTX_CTOR_DEFAULT
#if defined(_MSC_VER) && (_MSC_VER < 1800)
#define DIRECTX_CTOR_DEFAULT {}
#define DIRECTX_CTOR_DELETE ;
#else
#define DIRECTX_CTOR_DEFAULT =default;
#define DIRECTX_CTOR_DELETE =delete;
#endif
#endif
#if defined(_XBOX_ONE) && defined(_TITLE)
#include <d3d11_x.h>
#define DCOMMON_H_INCLUDED
@ -43,6 +38,10 @@
#include <d3d11_1.h>
#endif
#if (defined(_XBOX_ONE) && defined(_TITLE)) || (defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP))
#include <Windows.Foundation.h>
#endif
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
#include <Windows.UI.Core.h>
#endif
@ -62,20 +61,6 @@
#include <string>
#include <vector>
// VS 2010's stdint.h conflicts with intsafe.h
#pragma warning(push)
#pragma warning(disable : 4005)
#include <stdint.h>
#include <intsafe.h>
#pragma warning(pop)
#include <wrl.h>
namespace DirectX
{
#if (DIRECTX_MATH_VERSION < 305) && !defined(XM_CALLCONV)
#define XM_CALLCONV __fastcall
typedef const XMVECTOR& HXMVECTOR;
typedef const XMMATRIX& FXMMATRIX;
#endif
}

Двоичные данные
Media/Fonts/XboxOneControllerLegendSmall.spritefont Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -297,7 +297,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
@ -352,29 +352,32 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
m_d3dRenderTargetView.ReleaseAndGetAddressOf()
));
// Create a depth stencil view for use with 3D rendering if needed.
CD3D11_TEXTURE2D_DESC depthStencilDesc(
m_depthBufferFormat,
backBufferWidth,
backBufferHeight,
1, // This depth stencil view has only one texture.
1, // Use a single mipmap level.
D3D11_BIND_DEPTH_STENCIL
);
if (m_depthBufferFormat != DXGI_FORMAT_UNKNOWN)
{
// Create a depth stencil view for use with 3D rendering if needed.
CD3D11_TEXTURE2D_DESC depthStencilDesc(
m_depthBufferFormat,
backBufferWidth,
backBufferHeight,
1, // This depth stencil view has only one texture.
1, // Use a single mipmap level.
D3D11_BIND_DEPTH_STENCIL
);
ComPtr<ID3D11Texture2D> depthStencil;
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D(
&depthStencilDesc,
nullptr,
depthStencil.GetAddressOf()
));
ComPtr<ID3D11Texture2D> depthStencil;
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D(
&depthStencilDesc,
nullptr,
depthStencil.GetAddressOf()
));
CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilView(
depthStencil.Get(),
&depthStencilViewDesc,
m_d3dDepthStencilView.ReleaseAndGetAddressOf()
));
CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilView(
depthStencil.Get(),
&depthStencilViewDesc,
m_d3dDepthStencilView.ReleaseAndGetAddressOf()
));
}
// Set the 3D rendering viewport to target the entire window.
m_screenViewport = CD3D11_VIEWPORT(
@ -522,8 +525,11 @@ void DX::DeviceResources::Present()
// overwritten. If dirty or scroll rects are used, this call should be removed.
m_d3dContext->DiscardView(m_d3dRenderTargetView.Get());
// Discard the contents of the depth stencil.
m_d3dContext->DiscardView(m_d3dDepthStencilView.Get());
if (m_d3dDepthStencilView)
{
// Discard the contents of the depth stencil.
m_d3dContext->DiscardView(m_d3dDepthStencilView.Get());
}
// If the device was removed either by a disconnection or a driver upgrade, we
// must recreate all device resources.

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
@ -152,17 +152,15 @@ protected:
ApplicationView::PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
// Change to ApplicationViewWindowingMode::FullScreen to default to full screen
auto desiredSize = Size( ConvertPixelsToDips( w ),
ConvertPixelsToDips( h ) );
auto desiredSize = Size(ConvertPixelsToDips(w), ConvertPixelsToDips(h));
ApplicationView::PreferredLaunchViewSize = desiredSize;
auto view = ApplicationView::GetForCurrentView();
auto minSize = Size( ConvertPixelsToDips( 320 ),
ConvertPixelsToDips( 200 ) );
auto minSize = Size(ConvertPixelsToDips(320), ConvertPixelsToDips(200));
view->SetPreferredMinSize( minSize );
view->SetPreferredMinSize(minSize);
CoreWindow::GetForCurrentThread()->Activate();

Просмотреть файл

@ -28,7 +28,8 @@ Sample::Sample() :
m_pSourceVoice(nullptr),
m_currentFile(0)
{
m_deviceResources = std::make_unique<DX::DeviceResources>();
// Renders only 2D, so no need for a depth buffer.
m_deviceResources = std::make_unique<DX::DeviceResources>(DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_UNKNOWN);
m_deviceResources->RegisterDeviceNotify(this);
}
@ -40,9 +41,6 @@ void Sample::Initialize(IUnknown* window, int width, int height, DXGI_MODE_ROTAT
m_keyboard = std::make_unique<Keyboard>();
m_keyboard->SetWindow(reinterpret_cast<ABI::Windows::UI::Core::ICoreWindow*>(window));
m_mouse = std::make_unique<Mouse>();
m_mouse->SetWindow(reinterpret_cast<ABI::Windows::UI::Core::ICoreWindow*>(window));
m_deviceResources->SetWindow(window, width, height, rotation);
m_deviceResources->CreateDeviceResources();
@ -157,7 +155,10 @@ void Sample::Render()
PIXEndEvent(context);
// Show the new frame.
PIXBeginEvent(PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent();
}
// Helper method to clear the back buffers.
@ -168,12 +169,10 @@ void Sample::Clear()
// Clear the views
auto renderTarget = m_deviceResources->GetBackBufferRenderTargetView();
auto depthStencil = m_deviceResources->GetDepthStencilView();
// Don't need to clear color as the sample draws a fullscreen image background
context->ClearDepthStencilView(depthStencil, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
context->OMSetRenderTargets(1, &renderTarget, depthStencil);
context->OMSetRenderTargets(1, &renderTarget, nullptr);
// Set the viewport.
auto viewport = m_deviceResources->GetScreenViewport();
@ -256,6 +255,7 @@ void Sample::OnDeviceLost()
{
m_spriteBatch.reset();
m_font.reset();
m_background.Reset();
}
void Sample::OnDeviceRestored()

Просмотреть файл

@ -62,7 +62,6 @@ private:
// Input devices.
std::unique_ptr<DirectX::GamePad> m_gamePad;
std::unique_ptr<DirectX::Keyboard> m_keyboard;
std::unique_ptr<DirectX::Mouse> m_mouse;
// Render objects.
std::unique_ptr<DirectX::SpriteBatch> m_spriteBatch;

Просмотреть файл

@ -297,7 +297,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;

Просмотреть файл

@ -183,7 +183,11 @@ void Sample::Render()
PIXEndEvent(context);
PIXEndEvent(context);
// Show the new frame.
PIXBeginEvent(PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent();
}
// Helper method to clear the back buffers.

Просмотреть файл

@ -100,6 +100,9 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<PackageCertificateKeyFile>DirectXTKSimpleSample_TemporaryKey.pfx</PackageCertificateKeyFile>
<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>x86</AppxBundlePlatforms>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Link>

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
@ -160,17 +160,15 @@ protected:
ApplicationView::PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
// Change to ApplicationViewWindowingMode::FullScreen to default to full screen
auto desiredSize = Size( ConvertPixelsToDips( w ),
ConvertPixelsToDips( h ) );
auto desiredSize = Size(ConvertPixelsToDips(w), ConvertPixelsToDips(h));;
ApplicationView::PreferredLaunchViewSize = desiredSize;
auto view = ApplicationView::GetForCurrentView();
auto minSize = Size( ConvertPixelsToDips( 320 ),
ConvertPixelsToDips( 200 ) );
auto minSize = Size(ConvertPixelsToDips(320), ConvertPixelsToDips(200));
view->SetPreferredMinSize( minSize );
view->SetPreferredMinSize(minSize);
CoreWindow::GetForCurrentThread()->Activate();

Просмотреть файл

@ -297,7 +297,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
@ -152,17 +152,15 @@ protected:
ApplicationView::PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
// Change to ApplicationViewWindowingMode::FullScreen to default to full screen
auto desiredSize = Size( ConvertPixelsToDips( w ),
ConvertPixelsToDips( h ) );
auto desiredSize = Size(ConvertPixelsToDips(w), ConvertPixelsToDips(h));
ApplicationView::PreferredLaunchViewSize = desiredSize;
auto view = ApplicationView::GetForCurrentView();
auto minSize = Size( ConvertPixelsToDips( 320 ),
ConvertPixelsToDips( 200 ) );
auto minSize = Size(ConvertPixelsToDips(320), ConvertPixelsToDips(200));
view->SetPreferredMinSize( minSize );
view->SetPreferredMinSize(minSize);
CoreWindow::GetForCurrentThread()->Activate();

Двоичные данные
Samples/Graphics/SimpleTriangleUWP/Readme.docx

Двоичный файл не отображается.

Просмотреть файл

@ -8,6 +8,7 @@
#include "pch.h"
#include "SimpleTriangleUWP.h"
#include "ATGColors.h"
#include "ReadData.h"
using namespace DirectX;
@ -25,7 +26,8 @@ namespace
Sample::Sample()
{
m_deviceResources = std::make_unique<DX::DeviceResources>();
// Use gamma-correct rendering.
m_deviceResources = std::make_unique<DX::DeviceResources>(DXGI_FORMAT_B8G8R8A8_UNORM_SRGB);
m_deviceResources->RegisterDeviceNotify(this);
}
@ -97,7 +99,7 @@ void Sample::Render()
auto context = m_deviceResources->GetD3DDeviceContext();
PIXBeginEvent(context, PIX_COLOR_DEFAULT, L"Render");
// Set input assembler state
// Set input assembler state.
context->IASetInputLayout(m_spInputLayout.Get());
UINT strides = sizeof(Vertex);
@ -105,16 +107,20 @@ void Sample::Render()
context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
context->IASetVertexBuffers(0, 1, m_spVertexBuffer.GetAddressOf(), &strides, &offsets);
// Set shaders
// Set shaders.
context->VSSetShader(m_spVertexShader.Get(), nullptr, 0);
context->GSSetShader(nullptr, nullptr, 0);
context->PSSetShader(m_spPixelShader.Get(), nullptr, 0);
// Draw triangle
// Draw triangle.
context->Draw(3, 0);
PIXEndEvent(context);
// Show the new frame.
PIXBeginEvent(PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent();
}
// Helper method to clear the back buffers.
@ -123,11 +129,13 @@ void Sample::Clear()
auto context = m_deviceResources->GetD3DDeviceContext();
PIXBeginEvent(context, PIX_COLOR_DEFAULT, L"Clear");
// Clear the views
// Clear the views.
auto renderTarget = m_deviceResources->GetBackBufferRenderTargetView();
auto depthStencil = m_deviceResources->GetDepthStencilView();
context->ClearRenderTargetView(renderTarget, Colors::CornflowerBlue);
// Use linear clear color for gamma-correct rendering.
context->ClearRenderTargetView(renderTarget, ATG::ColorsLinear::Background);
context->ClearDepthStencilView(depthStencil, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
context->OMSetRenderTargets(1, &renderTarget, depthStencil);
@ -190,7 +198,7 @@ void Sample::CreateDeviceDependentResources()
{
auto device = m_deviceResources->GetD3DDevice();
// Load and create shaders
// Load and create shaders.
auto vertexShaderBlob = DX::ReadData(L"VertexShader.cso");
DX::ThrowIfFailed(
@ -203,7 +211,7 @@ void Sample::CreateDeviceDependentResources()
device->CreatePixelShader(pixelShaderBlob.data(), pixelShaderBlob.size(),
nullptr, m_spPixelShader.ReleaseAndGetAddressOf()));
// Create input layout
// Create input layout.
static const D3D11_INPUT_ELEMENT_DESC s_inputElementDesc[2] =
{
{ "SV_Position", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
@ -215,7 +223,7 @@ void Sample::CreateDeviceDependentResources()
vertexShaderBlob.data(), vertexShaderBlob.size(),
m_spInputLayout.ReleaseAndGetAddressOf()));
// Create vertex buffer
// Create vertex buffer.
static const Vertex s_vertexData[3] =
{
{ { 0.0f, 0.5f, 0.5f, 1.0f },{ 1.0f, 0.0f, 0.0f, 1.0f } }, // Top / Red

Просмотреть файл

@ -212,6 +212,7 @@
</FXCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h" />
<ClInclude Include="..\..\..\Kits\ATGTK\ReadData.h" />
<ClInclude Include="SimpleTriangleUWP.h" />
<ClInclude Include="pch.h" />

Просмотреть файл

@ -24,6 +24,9 @@
<ClInclude Include="..\..\..\Kits\ATGTK\ReadData.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />

Просмотреть файл

@ -185,7 +185,7 @@ void DX::DeviceResources::CreateDeviceResources()
// Create a command list for recording graphics commands.
DX::ThrowIfFailed(m_d3dDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocators[0].Get(), nullptr, IID_PPV_ARGS(m_commandList.ReleaseAndGetAddressOf())));
m_commandList->Close();
DX::ThrowIfFailed(m_commandList->Close());
// Create a fence for tracking GPU execution progress.
DX::ThrowIfFailed(m_d3dDevice->CreateFence(m_fenceValues[m_backBufferIndex], D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(m_fence.ReleaseAndGetAddressOf())));
@ -259,7 +259,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
@ -506,7 +506,7 @@ void DX::DeviceResources::Present()
m_commandList->ResourceBarrier(1, &barrier);
// Send the command list off to the GPU for processing.
m_commandList->Close();
DX::ThrowIfFailed(m_commandList->Close());
m_commandQueue->ExecuteCommandLists(1, CommandListCast(m_commandList.GetAddressOf()));
// The first argument instructs DXGI to block until VSync, putting the application

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
@ -152,17 +152,15 @@ protected:
ApplicationView::PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
// Change to ApplicationViewWindowingMode::FullScreen to default to full screen
auto desiredSize = Size( ConvertPixelsToDips( w ),
ConvertPixelsToDips( h ) );
auto desiredSize = Size(ConvertPixelsToDips(w), ConvertPixelsToDips(h));;
ApplicationView::PreferredLaunchViewSize = desiredSize;
auto view = ApplicationView::GetForCurrentView();
auto minSize = Size( ConvertPixelsToDips( 320 ),
ConvertPixelsToDips( 200 ) );
auto minSize = Size(ConvertPixelsToDips(320), ConvertPixelsToDips(200));
view->SetPreferredMinSize( minSize );
view->SetPreferredMinSize(minSize);
CoreWindow::GetForCurrentThread()->Activate();

Двоичные данные
Samples/Graphics/SimpleTriangleUWP12/Readme.docx

Двоичный файл не отображается.

Просмотреть файл

@ -8,6 +8,7 @@
#include "pch.h"
#include "SimpleTriangleUWP12.h"
#include "ATGColors.h"
#include "ReadData.h"
using namespace DirectX;
@ -27,7 +28,8 @@ namespace
Sample::Sample()
{
m_deviceResources = std::make_unique<DX::DeviceResources>();
// Use gamma-correct rendering.
m_deviceResources = std::make_unique<DX::DeviceResources>(DXGI_FORMAT_B8G8R8A8_UNORM_SRGB);
m_deviceResources->RegisterDeviceNotify(this);
}
@ -113,10 +115,16 @@ void Sample::Render()
// Set necessary state.
commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
commandList->IASetVertexBuffers(0, 1, &m_vertexBufferView);
// Draw triangle.
commandList->DrawInstanced(3, 1, 0, 0);
PIXEndEvent(commandList);
// Show the new frame.
PIXBeginEvent(m_deviceResources->GetCommandQueue(), PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent(m_deviceResources->GetCommandQueue());
}
// Helper method to clear the back buffers.
@ -130,7 +138,10 @@ void Sample::Clear()
auto dsvDescriptor = m_deviceResources->GetDepthStencilView();
commandList->OMSetRenderTargets(1, &rtvDescriptor, FALSE, &dsvDescriptor);
commandList->ClearRenderTargetView(rtvDescriptor, Colors::CornflowerBlue, 0, nullptr);
// Use linear clear color for gamma-correct rendering.
commandList->ClearRenderTargetView(rtvDescriptor, ATG::ColorsLinear::Background, 0, nullptr);
commandList->ClearDepthStencilView(dsvDescriptor, D3D12_CLEAR_FLAG_DEPTH, 1.0f, 0, 0, nullptr);
// Set the viewport and scissor rect.
@ -233,7 +244,7 @@ void Sample::CreateDeviceDependentResources()
device->CreateGraphicsPipelineState(&psoDesc,
IID_PPV_ARGS(m_pipelineState.ReleaseAndGetAddressOf())));
// Create vertex buffer
// Create vertex buffer.
{
static const Vertex s_vertexData[3] =
{

Просмотреть файл

@ -212,6 +212,7 @@
</FXCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h" />
<ClInclude Include="..\..\..\Kits\ATGTK\ReadData.h" />
<ClInclude Include="SimpleTriangleUWP12.h" />
<ClInclude Include="pch.h" />

Просмотреть файл

@ -27,6 +27,9 @@
<ClInclude Include="..\..\..\Kits\ATGTK\ReadData.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />

Просмотреть файл

@ -297,7 +297,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Initialize the mouse cursor object and implements the event handling for
// necessary mouse cursor events to implement clip cursor or relative mouse mode.

Просмотреть файл

@ -163,7 +163,11 @@ void Sample::Render()
m_spriteBatch->End();
PIXEndEvent(context);
// Show the new frame.
PIXBeginEvent(PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent();
}
// Helper method to clear the back buffers.

Просмотреть файл

@ -297,7 +297,7 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
swapChainDesc.BufferCount = m_backBufferCount;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
swapChainDesc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
@ -352,29 +352,32 @@ void DX::DeviceResources::CreateWindowSizeDependentResources()
m_d3dRenderTargetView.ReleaseAndGetAddressOf()
));
// Create a depth stencil view for use with 3D rendering if needed.
CD3D11_TEXTURE2D_DESC depthStencilDesc(
m_depthBufferFormat,
backBufferWidth,
backBufferHeight,
1, // This depth stencil view has only one texture.
1, // Use a single mipmap level.
D3D11_BIND_DEPTH_STENCIL
);
if (m_depthBufferFormat != DXGI_FORMAT_UNKNOWN)
{
// Create a depth stencil view for use with 3D rendering if needed.
CD3D11_TEXTURE2D_DESC depthStencilDesc(
m_depthBufferFormat,
backBufferWidth,
backBufferHeight,
1, // This depth stencil view has only one texture.
1, // Use a single mipmap level.
D3D11_BIND_DEPTH_STENCIL
);
ComPtr<ID3D11Texture2D> depthStencil;
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D(
&depthStencilDesc,
nullptr,
depthStencil.GetAddressOf()
));
ComPtr<ID3D11Texture2D> depthStencil;
DX::ThrowIfFailed(m_d3dDevice->CreateTexture2D(
&depthStencilDesc,
nullptr,
depthStencil.GetAddressOf()
));
CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilView(
depthStencil.Get(),
&depthStencilViewDesc,
m_d3dDepthStencilView.ReleaseAndGetAddressOf()
));
CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(m_d3dDevice->CreateDepthStencilView(
depthStencil.Get(),
&depthStencilViewDesc,
m_d3dDepthStencilView.ReleaseAndGetAddressOf()
));
}
// Set the 3D rendering viewport to target the entire window.
m_screenViewport = CD3D11_VIEWPORT(
@ -522,8 +525,11 @@ void DX::DeviceResources::Present()
// overwritten. If dirty or scroll rects are used, this call should be removed.
m_d3dContext->DiscardView(m_d3dRenderTargetView.Get());
// Discard the contents of the depth stencil.
m_d3dContext->DiscardView(m_d3dDepthStencilView.Get());
if (m_d3dDepthStencilView)
{
// Discard the contents of the depth stencil.
m_d3dContext->DiscardView(m_d3dDepthStencilView.Get());
}
// If the device was removed either by a disconnection or a driver upgrade, we
// must recreate all device resources.

Просмотреть файл

@ -1,7 +1,7 @@
//--------------------------------------------------------------------------------------
// Main.cpp
//
// Entry point for universal Windows app.
// Entry point for Universal Windows Platform (UWP) app.
//
// Advanced Technology Group (ATG)
// Copyright (C) Microsoft Corporation. All rights reserved.
@ -152,17 +152,15 @@ protected:
ApplicationView::PreferredLaunchWindowingMode = ApplicationViewWindowingMode::PreferredLaunchViewSize;
// Change to ApplicationViewWindowingMode::FullScreen to default to full screen
auto desiredSize = Size( ConvertPixelsToDips( w ),
ConvertPixelsToDips( h ) );
auto desiredSize = Size(ConvertPixelsToDips(w), ConvertPixelsToDips(h));
ApplicationView::PreferredLaunchViewSize = desiredSize;
auto view = ApplicationView::GetForCurrentView();
auto minSize = Size( ConvertPixelsToDips( 320 ),
ConvertPixelsToDips( 200 ) );
auto minSize = Size(ConvertPixelsToDips(320), ConvertPixelsToDips(200));
view->SetPreferredMinSize( minSize );
view->SetPreferredMinSize(minSize);
CoreWindow::GetForCurrentThread()->Activate();

Просмотреть файл

@ -7,6 +7,8 @@
#include "pch.h"
#include "SystemInfo.h"
#include "ATGColors.h"
#include "ControllerFont.h"
using namespace DirectX;
@ -28,13 +30,13 @@ namespace
{
XMVECTOR size = font->MeasureString(text);
XMFLOAT2 pos(mid - XMVectorGetX(size)*scale, y);
font->DrawString(batch, text, pos, Colors::White, 0.f, Vector2::Zero, scale);
font->DrawString(batch, text, pos, ATG::Colors::Blue, 0.f, Vector2::Zero, scale);
}
inline float DrawStringRight(SpriteBatch* batch, SpriteFont* font, const wchar_t* text, float mid, float y, float scale)
{
XMFLOAT2 pos(mid, y);
font->DrawString(batch, text, pos, Colors::White, 0.f, Vector2::Zero, scale);
font->DrawString(batch, text, pos, ATG::Colors::White, 0.f, Vector2::Zero, scale);
return font->GetLineSpacing()*scale;
}
}
@ -44,7 +46,8 @@ Sample::Sample() :
m_current(0),
m_gamepadPresent(false)
{
m_deviceResources = std::make_unique<DX::DeviceResources>();
// Renders only 2D, so no need for a depth buffer.
m_deviceResources = std::make_unique<DX::DeviceResources>(DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_UNKNOWN);
m_deviceResources->RegisterDeviceNotify(this);
}
@ -157,14 +160,14 @@ void Sample::Render()
float y = float(safeRect.top);
XMFLOAT2 pos(float(safeRect.left), float(safeRect.bottom));
XMFLOAT2 pos(float(safeRect.left), float(safeRect.bottom) - m_smallFont->GetLineSpacing());
if (m_gamepadPresent)
{
DX::DrawControllerString(m_batch.get(), m_smallFont.get(), m_ctrlFont.get(), L"Use [A], [B], or [DPad] to cycle pages", pos, Colors::Gray, m_scale);
DX::DrawControllerString(m_batch.get(), m_smallFont.get(), m_ctrlFont.get(), L"Use [A], [B], or [DPad] to cycle pages", pos, ATG::Colors::LightGrey, m_scale);
}
else
{
m_smallFont->DrawString(m_batch.get(), L"Use Left/Right to cycle pages", pos, Colors::Gray, 0, Vector2::Zero, m_scale);
m_smallFont->DrawString(m_batch.get(), L"Use Left/Right to cycle pages", pos, ATG::Colors::LightGrey, 0, Vector2::Zero, m_scale);
}
float spacer = XMVectorGetX(m_smallFont->MeasureString(L"X")*m_scale);
@ -176,7 +179,7 @@ void Sample::Render()
{
case InfoPage::SYSTEMINFO:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetNativeSystemInfo", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetNativeSystemInfo", mid, y, ATG::Colors::LightGrey, m_scale);
SYSTEM_INFO info = {};
GetNativeSystemInfo(&info);
@ -229,7 +232,7 @@ void Sample::Render()
case InfoPage::GETPROCESSINFO:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetProcessInformation", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetProcessInformation", mid, y, ATG::Colors::LightGrey, m_scale);
APP_MEMORY_INFORMATION info = {};
if (GetProcessInformation(GetCurrentProcess(), ProcessAppMemoryInfo, &info, sizeof(info)))
@ -240,19 +243,19 @@ void Sample::Render()
auto tc = static_cast<uint32_t>(info.TotalCommitUsage / (1024 * 1024));
wchar_t buff[128] = { 0 };
swprintf_s(buff, L"%u (MB)", ac);
swprintf_s(buff, L"%u (MiB)", ac);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"AvailableCommit", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
swprintf_s(buff, L"%u (MB)", pc);
swprintf_s(buff, L"%u (MiB)", pc);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"PrivateCommitUsage", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
swprintf_s(buff, L"%u (MB)", ppc);
swprintf_s(buff, L"%u (MiB)", ppc);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"PeakPrivateCommitUsage", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
swprintf_s(buff, L"%u (MB)", tc);
swprintf_s(buff, L"%u (MiB)", tc);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"TotalCommitUsage", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
}
@ -261,7 +264,7 @@ void Sample::Render()
case InfoPage::ANALYTICSINFO:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"AnalyticsInfo", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"AnalyticsInfo", mid, y, ATG::Colors::LightGrey, m_scale);
auto versionInfo = Windows::System::Profile::AnalyticsInfo::VersionInfo;
@ -283,7 +286,7 @@ void Sample::Render()
case InfoPage::APICONTRACT:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"IsApiContractPresent", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"IsApiContractPresent", mid, y, ATG::Colors::LightGrey, m_scale);
using namespace Windows::Foundation::Metadata;
@ -308,7 +311,7 @@ void Sample::Render()
case InfoPage::CPUSETS:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetSystemCpuSetInformation", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"GetSystemCpuSetInformation", mid, y, ATG::Colors::LightGrey, m_scale);
ULONG retsize = 0;
(void)GetSystemCpuSetInformation(nullptr, 0, &retsize, GetCurrentProcess(), 0);
@ -408,7 +411,7 @@ void Sample::Render()
if (moreThanOneGroup)
{
y += m_smallFont->GetLineSpacing() * m_scale;
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"Note more than one group found; ignored extra groups!", mid, y, Colors::Red, m_scale);
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"Note more than one group found; ignored extra groups!", mid, y, ATG::Colors::Orange, m_scale);
}
}
}
@ -416,9 +419,9 @@ void Sample::Render()
case InfoPage::DXGI:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"DXGI", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"DXGI", mid, y, ATG::Colors::LightGrey, m_scale);
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"DXGI_OUTPUT_DESC", mid, y, Colors::White, m_scale);
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"DXGI_OUTPUT_DESC", mid, y, ATG::Colors::OffWhite, m_scale);
ComPtr<IDXGIOutput> output;
if (SUCCEEDED(m_deviceResources->GetSwapChain()->GetContainingOutput(output.GetAddressOf())))
@ -446,7 +449,7 @@ void Sample::Render()
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"Rotation", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), rotation, right, y, m_scale) * 1.25f;
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"DXGI_ADAPTER_DESC", mid, y, Colors::White, m_scale);
y += DrawStringCenter(m_batch.get(), m_smallFont.get(), L"DXGI_ADAPTER_DESC", mid, y, ATG::Colors::OffWhite, m_scale);
ComPtr<IDXGIAdapter> adapter;
if (SUCCEEDED(output->GetParent(IID_PPV_ARGS(adapter.GetAddressOf()))))
@ -469,15 +472,15 @@ void Sample::Render()
auto dsm = static_cast<uint32_t>(adapterDesc.DedicatedSystemMemory / (1024 * 1024));
auto ssm = static_cast<uint32_t>(adapterDesc.SharedSystemMemory / (1024 * 1024));
swprintf_s(buff, L"%u (MB)", dvm);
swprintf_s(buff, L"%u (MiB)", dvm);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"DedicatedVideoMemory", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
swprintf_s(buff, L"%u (MB)", dsm);
swprintf_s(buff, L"%u (MiB)", dsm);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"DedicatedSystemMemory", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
swprintf_s(buff, L"%u (MB)", ssm);
swprintf_s(buff, L"%u (MiB)", ssm);
DrawStringLeft(m_batch.get(), m_smallFont.get(), L"SharedSystemMemory", left, y, m_scale);
y += DrawStringRight(m_batch.get(), m_smallFont.get(), buff, right, y, m_scale);
}
@ -487,7 +490,7 @@ void Sample::Render()
case InfoPage::DIRECT3D11_1:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.1", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.1", mid, y, ATG::Colors::LightGrey, m_scale);
const wchar_t* featLevel = L"Unknown";
switch (m_deviceResources->GetDeviceFeatureLevel())
@ -554,7 +557,7 @@ void Sample::Render()
case InfoPage::DIRECT3D11_2:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.2", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.2", mid, y, ATG::Colors::LightGrey, m_scale);
auto device = m_deviceResources->GetD3DDevice();
@ -587,7 +590,7 @@ void Sample::Render()
case InfoPage::DIRECT3D11_3:
{
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.3", mid, y, Colors::Yellow, m_scale);
y += DrawStringCenter(m_batch.get(), m_largeFont.get(), L"Direct3D 11.3", mid, y, ATG::Colors::LightGrey, m_scale);
auto device = m_deviceResources->GetD3DDevice();
@ -638,7 +641,11 @@ void Sample::Render()
m_batch->End();
PIXEndEvent(context);
// Show the new frame.
PIXBeginEvent(PIX_COLOR_DEFAULT, L"Present");
m_deviceResources->Present();
PIXEndEvent();
}
// Helper method to clear the back buffers.
@ -649,12 +656,10 @@ void Sample::Clear()
// Clear the views
auto renderTarget = m_deviceResources->GetBackBufferRenderTargetView();
auto depthStencil = m_deviceResources->GetDepthStencilView();
context->ClearRenderTargetView(renderTarget, Colors::CornflowerBlue);
context->ClearDepthStencilView(depthStencil, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
// Don't need to clear render target since we drawing image to fill screen
context->OMSetRenderTargets(1, &renderTarget, depthStencil);
context->OMSetRenderTargets(1, &renderTarget, nullptr);
// Set the viewport.
auto viewport = m_deviceResources->GetScreenViewport();
@ -721,7 +726,7 @@ void Sample::CreateDeviceDependentResources()
m_smallFont = std::make_unique<SpriteFont>(device, L"SegoeUI_18.spritefont");
m_largeFont = std::make_unique<SpriteFont>(device, L"SegoeUI_36.spritefont");
m_ctrlFont = std::make_unique<SpriteFont>(device, L"XboxOneController.spritefont");
m_ctrlFont = std::make_unique<SpriteFont>(device, L"XboxOneControllerLegendSmall.spritefont");
DX::ThrowIfFailed(CreateDDSTextureFromFile(device, L"ATGSampleBackground.DDS", nullptr, m_background.ReleaseAndGetAddressOf()));
}

Просмотреть файл

@ -194,6 +194,7 @@
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h" />
<ClInclude Include="..\..\..\Kits\ATGTK\ControllerFont.h" />
<ClInclude Include="SystemInfo.h" />
<ClInclude Include="pch.h" />
@ -233,7 +234,7 @@
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
</None>
<None Include="..\..\..\Media\Fonts\XboxOneController.spritefont">
<None Include="..\..\..\Media\Fonts\XboxOneControllerLegendSmall.spritefont">
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</DeploymentContent>

Просмотреть файл

@ -24,6 +24,9 @@
<ClInclude Include="..\..\..\Kits\ATGTK\ControllerFont.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
<ClInclude Include="..\..\..\Kits\ATGTK\ATGColors.h">
<Filter>ATG Tool Kit</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="pch.cpp" />
@ -64,9 +67,9 @@
<None Include="..\..\..\Media\Fonts\SegoeUI_36.spritefont">
<Filter>Assets</Filter>
</None>
<None Include="..\..\..\Media\Fonts\XboxOneController.spritefont">
<None Include="Readme.docx" />
<None Include="..\..\..\Media\Fonts\XboxOneControllerLegendSmall.spritefont">
<Filter>Assets</Filter>
</None>
<None Include="Readme.docx" />
</ItemGroup>
</Project>