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-e03cc46cb475master
parent
e7afb972b8
commit
f964cb3d60
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue