#pragma region CPL License /* Nuclex Native Framework Copyright (C) 2002-2013 Nuclex Development Labs This library is free software; you can redistribute it and/or modify it under the terms of the IBM Common Public License as published by the IBM Corporation; either version 1.0 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the IBM Common Public License for more details. You should have received a copy of the IBM Common Public License along with this library */ #pragma endregion // CPL License #ifndef NUCLEX_GRAPHICS_RASTERIZATION_DIRECT3D11RASTERIZERSETTINGS_H #define NUCLEX_GRAPHICS_RASTERIZATION_DIRECT3D11RASTERIZERSETTINGS_H #include "Nuclex/Graphics/Config.h" #include "Nuclex/Graphics/Rasterization/RasterizerSettings.h" #include "Direct3D11Api.h" namespace Nuclex { namespace Graphics { namespace Rasterization { // ------------------------------------------------------------------------------------------- // ///Controls various settings the rasterizer can be configured with class Direct3D11RasterizerSettings : public RasterizerSettings { /// Initializes a new Direct3D 11 settings container public: Direct3D11RasterizerSettings() {} /// Frees all resources owned by the rasterizer settings container public: virtual ~Direct3D11RasterizerSettings() {} /// Sets the Direct3D device for which settings will be managed /// Direct3D 11 device settings will be managed for public: void SetDirect3DDevice(const ID3D11DeviceNPtr &device) { this->device = device; } /// Sets the Direct3D device for which settings will be managed /// Direct3D 11 device settings will be managed for public: void SetDirect3DDevice(const ID3D11DeviceContextNPtr &context) { this->context = context; } /// Whether the rasterizer is currently synching page flips /// True if the rasterizer is synching page flips public: bool IsVerticalSynchronizationEnabled() const; /// Changes whether the rasterizer will synchronize its page flips /// True if the rasterizer should synchronize its page flips public: void EnableVerticalSynchronization(bool wait = true); /* /// Retrieves the current culling mode of the rasterizer /// The rasterizer's current culling mode public: CullMode::Enum GetCullMode() const; /// Changes the culling mode of the rasterizer /// New culling mode the rasterizer should use public: void SetCullMode(CullMode::Enum cullMode); */ /// Counts the number of supported display resolutions /// The total number of display resolutions supported public: std::size_t CountSupportedResolutions() const; /// Direct3D device settings will be managed for private: ID3D11DeviceNPtr device; /// Direct3D device context the settings will be applied to private: ID3D11DeviceContextNPtr context; #if !defined(NUCLEX_GRAPHICS_DIRECT3D11_1) /// Whether to synchronize presents to the screen's update interval private: bool isVerticalSynchronizationEnabled; #endif /// Stores the rasterizer state of Direct3D 11 private: D3D11_RASTERIZER_DESC rasterizerDescription; }; // ------------------------------------------------------------------------------------------- // }}} // namespace Nuclex::Graphics::Rasterization #endif // NUCLEX_GRAPHICS_RASTERIZATION_DIRECT3D11RASTERIZERSETTINGS_H