Commit f964cb3d authored by hybrid's avatar hybrid

Add possibility to change render context for OpenGL with beginScene. Should...

Add possibility to change render context for OpenGL with beginScene. Should work if the context is shared with the one from Irrlicht.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@3034 dfc29bdd-3216-0410-991c-e03cc46cb475
parent e7afb972
......@@ -39,7 +39,8 @@ COpenGLDriver::COpenGLDriver(const irr::SIrrlichtCreationParameters& params,
CurrentRendertargetSize(0,0), ColorFormat(ECF_R8G8B8),
CurrentTarget(ERT_FRAME_BUFFER),
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer),
HDc(0), Window(static_cast<HWND>(params.WindowId)), DeviceType(EIDT_WIN32)
HDc(0), Device(device), Window(static_cast<HWND>(params.WindowId)),
DeviceType(EIDT_WIN32)
{
#ifdef _DEBUG
setDebugName("COpenGLDriver");
......@@ -457,7 +458,7 @@ COpenGLDriver::COpenGLDriver(const SIrrlichtCreationParameters& params,
CurrentRendertargetSize(0,0), ColorFormat(ECF_R8G8B8),
CurrentTarget(ERT_FRAME_BUFFER),
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer),
_device(device), DeviceType(EIDT_OSX)
Device(device), DeviceType(EIDT_OSX)
{
#ifdef _DEBUG
setDebugName("COpenGLDriver");
......@@ -479,7 +480,8 @@ COpenGLDriver::COpenGLDriver(const SIrrlichtCreationParameters& params,
Transformation3DChanged(true), AntiAlias(params.AntiAlias),
RenderTargetTexture(0), CurrentRendertargetSize(0,0), ColorFormat(ECF_R8G8B8),
CurrentTarget(ERT_FRAME_BUFFER),
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer), DeviceType(EIDT_X11)
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer),
Device(device), DeviceType(EIDT_X11)
{
#ifdef _DEBUG
setDebugName("COpenGLDriver");
......@@ -560,7 +562,8 @@ COpenGLDriver::COpenGLDriver(const SIrrlichtCreationParameters& params,
Transformation3DChanged(true), AntiAlias(params.AntiAlias),
RenderTargetTexture(0), CurrentRendertargetSize(0,0), ColorFormat(ECF_R8G8B8),
CurrentTarget(ERT_FRAME_BUFFER),
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer), DeviceType(EIDT_SDL)
Doublebuffer(params.Doublebuffer), Stereo(params.Stereobuffer),
Device(device), DeviceType(EIDT_SDL)
{
#ifdef _DEBUG
setDebugName("COpenGLDriver");
......@@ -770,7 +773,7 @@ bool COpenGLDriver::endScene()
#ifdef _IRR_COMPILE_WITH_OSX_DEVICE_
if (DeviceType == EIDT_OSX)
{
_device->flush();
Device->flush();
return true;
}
#endif
......@@ -822,6 +825,8 @@ bool COpenGLDriver::beginScene(bool backBuffer, bool zBuffer, SColor color,
{
CNullDriver::beginScene(backBuffer, zBuffer, color, videoData, sourceRect);
changeRenderContext(videoData, Device);
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)
if (DeviceType == EIDT_SDL)
{
......
......@@ -57,6 +57,9 @@ namespace video
COpenGLDriver(const SIrrlichtCreationParameters& params, io::IFileSystem* io, CIrrDeviceMacOSX *device);
#endif
//! generic version which overloads the unimplemented versions
bool changeRenderContext(const SExposedVideoData& videoData, void* device) {return false;}
//! destructor
virtual ~COpenGLDriver();
......@@ -460,13 +463,20 @@ namespace video
#ifdef _IRR_WINDOWS_API_
HDC HDc; // Private GDI Device Context
HWND Window;
#ifdef _IRR_COMPILE_WITH_WINDOWS_DEVICE_
CIrrDeviceWin32 *Device;
#endif
#endif
#ifdef _IRR_COMPILE_WITH_X11_DEVICE_
GLXDrawable Drawable;
Display* X11Display;
CIrrDeviceLinux *Device;
#endif
#ifdef _IRR_COMPILE_WITH_OSX_DEVICE_
CIrrDeviceMacOSX *_device;
CIrrDeviceMacOSX *Device;
#endif
#ifdef _IRR_COMPILE_WITH_SDL_DEVICE_
CIrrDeviceSDL *Device;
#endif
E_DEVICE_TYPE DeviceType;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment