mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-12-16 12:42:30 +00:00
chore: initial commit
This commit is contained in:
commit
70b00c5c38
965 changed files with 264882 additions and 0 deletions
96
src/gx/gll/GLContext.h
Normal file
96
src/gx/gll/GLContext.h
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
#ifndef GX_GLL_GL_CONTEXT_H
|
||||
#define GX_GLL_GL_CONTEXT_H
|
||||
|
||||
#include "gx/gll/GLAbstractWindow.h"
|
||||
#include "gx/gll/GLTypes.h"
|
||||
#include "util/BlizzardCore.hpp"
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
#ifdef __OBJC__
|
||||
#include <AppKit/AppKit.h>
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#else
|
||||
typedef struct objc_object NSOpenGLContext;
|
||||
typedef struct objc_object NSOpenGLPixelFormat;
|
||||
#endif
|
||||
|
||||
class GLDevice;
|
||||
|
||||
class GLContext {
|
||||
public:
|
||||
// Types
|
||||
struct Context {
|
||||
NSOpenGLContext* context;
|
||||
NSOpenGLPixelFormat* pixelFormat;
|
||||
int32_t sampleCount;
|
||||
|
||||
~Context();
|
||||
};
|
||||
|
||||
struct GammaFormula {
|
||||
float m_RedMin;
|
||||
float m_RedMax;
|
||||
float m_RedGamma;
|
||||
float m_GreenMin;
|
||||
float m_GreenMax;
|
||||
float m_GreenGamma;
|
||||
float m_BlueMin;
|
||||
float m_BlueMax;
|
||||
float m_BlueGamma;
|
||||
};
|
||||
|
||||
// Static variables
|
||||
static NSOpenGLContext* s_MainContext;
|
||||
static Blizzard::Thread::TLSSlot s_CurrentContext;
|
||||
static Blizzard::Thread::TLSSlot s_CurrentGLContext;
|
||||
static CFDictionaryRef s_DesktopMode;
|
||||
|
||||
// Static functions
|
||||
static NSOpenGLContext* GetNSOpenGLCurrentContext(void);
|
||||
static NSOpenGLContext* GetCurrentContext(void);
|
||||
static void SetCurrentContext(NSOpenGLContext*);
|
||||
static GLContext* GetCurrentGLContext(void);
|
||||
static void SetCurrentGLContext(GLContext*);
|
||||
|
||||
// Member variables
|
||||
std::basic_string<char, std::char_traits<char>, std::allocator<char>> m_DebugName;
|
||||
std::map<uint32_t, GLContext::Context, std::less<uint32_t>, std::allocator<std::pair<const uint32_t, GLContext::Context>>> m_Contexts;
|
||||
Context* m_Context;
|
||||
GLDevice* m_Device;
|
||||
GLAbstractWindow* m_Window;
|
||||
bool m_Windowed;
|
||||
bool m_MTGLEnabled;
|
||||
bool m_VSyncEnabled;
|
||||
bool m_CaptureDisplay;
|
||||
uint32_t m_Width;
|
||||
uint32_t m_Height;
|
||||
uint32_t m_RefreshRate;
|
||||
GammaFormula m_GammaFormula;
|
||||
bool m_GammaTablesSet;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_GammaTableR;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_GammaTableG;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_GammaTableB;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_OsGammaTableR;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_OsGammaTableG;
|
||||
std::vector<uint16_t, std::allocator<uint16_t>> m_OsGammaTableB;
|
||||
|
||||
// Member functions
|
||||
GLContext(GLDevice*, const char*);
|
||||
int32_t GetBackingWidth();
|
||||
int32_t GetBackingHeight();
|
||||
int32_t GetWidth(void);
|
||||
int32_t GetHeight(void);
|
||||
bool IsCurrentContext(void);
|
||||
void MakeCurrent(bool);
|
||||
void SetContextFormat(GLTextureFormat, uint32_t);
|
||||
void SetFullscreenMode(uint32_t, uint32_t, uint32_t, bool);
|
||||
void SetWindow(GLAbstractWindow*, bool);
|
||||
void Swap(void);
|
||||
void Update(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue