mirror of
https://github.com/minetest/irrlicht.git
synced 2025-07-01 15:50:27 +02:00
Refactor SDL device to use the same abstraction as other devices
In particular this makes the OpenGL procedure stuff work. fixes https://github.com/minetest/minetest/issues/12265
This commit is contained in:
56
source/Irrlicht/CSDLManager.cpp
Normal file
56
source/Irrlicht/CSDLManager.cpp
Normal file
@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2022 sfan5
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in Irrlicht.h
|
||||
|
||||
#include "CSDLManager.h"
|
||||
|
||||
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && defined(_IRR_COMPILE_WITH_OPENGL_)
|
||||
|
||||
#include "CIrrDeviceSDL.h"
|
||||
#include "COpenGLCommon.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
CSDLManager::CSDLManager(CIrrDeviceSDL* device) : IContextManager(), SDLDevice(device)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CSDLManager");
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CSDLManager::initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data)
|
||||
{
|
||||
Data = data;
|
||||
return true;
|
||||
}
|
||||
|
||||
const SExposedVideoData& CSDLManager::getContext() const
|
||||
{
|
||||
return Data;
|
||||
}
|
||||
|
||||
bool CSDLManager::activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero)
|
||||
{
|
||||
// unclear if this is still needed:
|
||||
glFrontFace(GL_CW);
|
||||
return true;
|
||||
}
|
||||
|
||||
void* CSDLManager::getProcAddress(const std::string &procName)
|
||||
{
|
||||
return SDL_GL_GetProcAddress(procName.c_str());
|
||||
}
|
||||
|
||||
bool CSDLManager::swapBuffers()
|
||||
{
|
||||
SDLDevice->SwapWindow();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user