1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00
xn65/framework/graphics/adapter.hpp

56 lines
1.3 KiB
C++
Raw Normal View History

2024-03-18 15:41:46 -03:00
#ifndef XNA_GRAPHICS_ADAPTER_HPP
#define XNA_GRAPHICS_ADAPTER_HPP
#include "../enums.hpp"
#include "../types.hpp"
#include "../forward.hpp"
#include "displaymode.hpp"
namespace xna {
2024-03-21 16:01:47 -03:00
class IGraphicsAdapter {
2024-03-18 15:41:46 -03:00
public:
2024-03-21 16:01:47 -03:00
virtual ~IGraphicsAdapter() {
}
2024-03-18 15:41:46 -03:00
static PGraphicsAdapter DefaultAdapter() {
if (_adaptersList.empty())
return nullptr;
2024-03-21 16:01:47 -03:00
if (_defaultAdapterIndex >= _adaptersList.size())
2024-03-18 15:41:46 -03:00
return nullptr;
2024-03-21 16:01:47 -03:00
return _adaptersList[_defaultAdapterIndex];
2024-03-18 15:41:46 -03:00
}
static constexpr void DefaultAdapter(size_t index) {
2024-03-21 16:01:47 -03:00
_defaultAdapterIndex = index;
2024-03-18 15:41:46 -03:00
}
static constexpr std::vector<PGraphicsAdapter> Adapters() {
return _adaptersList;
}
2024-03-21 16:01:47 -03:00
virtual String Description() const = 0;
virtual Uint DeviceId() const = 0;
virtual String DeviceName() const = 0;
2024-03-18 15:41:46 -03:00
2024-03-21 16:01:47 -03:00
constexpr bool IsDefaultAdapter() const {
return _index == _defaultAdapterIndex;
2024-03-18 15:41:46 -03:00
}
2024-03-21 16:01:47 -03:00
virtual intptr_t MonitorHandle() const = 0;
virtual Uint Revision() const = 0;
virtual Uint SubSystemId() const = 0;
virtual Uint VendorId() const = 0;
virtual PDisplayModeCollection SupportedDisplayModes() const = 0;
protected:
Uint _index{ 0 };
inline static size_t _defaultAdapterIndex = 0;
static std::vector<PGraphicsAdapter> getAllAdapters();
2024-03-18 15:41:46 -03:00
inline static std::vector<PGraphicsAdapter> _adaptersList = getAllAdapters();
};
}
#endif