Fixed OGL-ES2 for win32 as well. Not yet properly running with my emulator, though. So setup might still be incomplete here.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@4597 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2013-10-26 12:13:26 +00:00
parent 8d647c930e
commit 53c6cfdf56
5 changed files with 34 additions and 17 deletions

View File

@ -66,7 +66,13 @@ namespace irr
#endif #endif
#ifdef _IRR_COMPILE_WITH_OGLES2_ #ifdef _IRR_COMPILE_WITH_OGLES2_
IVideoDriver* createOGLES2Driver(const SIrrlichtCreationParameters& params, video::SExposedVideoData& data, io::IFileSystem* io); IVideoDriver* createOGLES2Driver(const SIrrlichtCreationParameters& params, video::SExposedVideoData& data, io::IFileSystem* io
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, IContextManager* contextManager
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, CIrrDeviceIPhone* device
#endif
);
#endif #endif
} }
} // end namespace irr } // end namespace irr
@ -1158,8 +1164,6 @@ void CIrrDeviceWin32::createDriver()
data.OpenGLWin32.HWnd=HWnd; data.OpenGLWin32.HWnd=HWnd;
ContextManager = new video::CEGLManager(CreationParams,&data); ContextManager = new video::CEGLManager(CreationParams,&data);
ContextManager->initialize();
ContextManager->createSurface();
switchToFullScreen(); switchToFullScreen();
VideoDriver = video::createOGLES1Driver(CreationParams, data, FileSystem, ContextManager); VideoDriver = video::createOGLES1Driver(CreationParams, data, FileSystem, ContextManager);
@ -1179,9 +1183,10 @@ void CIrrDeviceWin32::createDriver()
video::SExposedVideoData data; video::SExposedVideoData data;
data.OpenGLWin32.HWnd=HWnd; data.OpenGLWin32.HWnd=HWnd;
ContextManager = new video::CEGLManager(CreationParams,&data);
switchToFullScreen(); switchToFullScreen();
VideoDriver = video::createOGLES2Driver(CreationParams, data, FileSystem); VideoDriver = video::createOGLES2Driver(CreationParams, data, FileSystem, ContextManager);
if (!VideoDriver) if (!VideoDriver)
{ {
os::Printer::log("Could not create OpenGL-ES2 driver.", ELL_ERROR); os::Printer::log("Could not create OpenGL-ES2 driver.", ELL_ERROR);

View File

@ -39,7 +39,7 @@ namespace video
COGLES2Driver::COGLES2Driver(const SIrrlichtCreationParameters& params, COGLES2Driver::COGLES2Driver(const SIrrlichtCreationParameters& params,
const SExposedVideoData& data, io::IFileSystem* io const SExposedVideoData& data, io::IFileSystem* io
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, CEGLManager* eglManager , IContextManager* contextManager
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, CIrrDeviceIPhone* device , CIrrDeviceIPhone* device
#endif #endif
@ -48,7 +48,7 @@ COGLES2Driver::COGLES2Driver(const SIrrlichtCreationParameters& params,
Transformation3DChanged(true), AntiAlias(params.AntiAlias), BridgeCalls(0), Transformation3DChanged(true), AntiAlias(params.AntiAlias), BridgeCalls(0),
RenderTargetTexture(0), CurrentRendertargetSize(0, 0), ColorFormat(ECF_R8G8B8) RenderTargetTexture(0), CurrentRendertargetSize(0, 0), ColorFormat(ECF_R8G8B8)
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, EGLManager(eglManager) , ContextManager(contextManager)
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, Device(device), ViewFramebuffer(0), , Device(device), ViewFramebuffer(0),
ViewRenderbuffer(0), ViewDepthRenderbuffer(0) ViewRenderbuffer(0), ViewDepthRenderbuffer(0)
@ -62,7 +62,13 @@ COGLES2Driver::COGLES2Driver(const SIrrlichtCreationParameters& params,
core::dimension2d<u32> WindowSize(0, 0); core::dimension2d<u32> WindowSize(0, 0);
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
EGLManager->createContext(); if (!ContextManager)
return;
ContextManager->grab();
ContextManager->initialize();
ContextManager->createSurface();
ContextManager->createContext();
WindowSize = params.WindowSize; WindowSize = params.WindowSize;
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
@ -110,7 +116,11 @@ COGLES2Driver::~COGLES2Driver()
delete BridgeCalls; delete BridgeCalls;
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
EGLManager->destroyContext(); if (ContextManager)
{
ContextManager->destroyContext();
ContextManager->drop();
}
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
if (0 != ViewFramebuffer) if (0 != ViewFramebuffer)
{ {
@ -426,7 +436,8 @@ bool COGLES2Driver::endScene()
CNullDriver::endScene(); CNullDriver::endScene();
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
EGLManager->swapBuffers(); if (ContextManager)
ContextManager->swapBuffers();
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
glFlush(); glFlush();
glBindRenderbufferOES(GL_RENDERBUFFER_OES, ViewRenderbuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES, ViewRenderbuffer);
@ -2857,13 +2868,13 @@ namespace video
{ {
#ifndef _IRR_COMPILE_WITH_OGLES2_ #ifndef _IRR_COMPILE_WITH_OGLES2_
class CEGLManager; class IContextManager;
#endif #endif
IVideoDriver* createOGLES2Driver(const SIrrlichtCreationParameters& params, IVideoDriver* createOGLES2Driver(const SIrrlichtCreationParameters& params,
video::SExposedVideoData& data, io::IFileSystem* io video::SExposedVideoData& data, io::IFileSystem* io
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, CEGLManager* eglManager , IContextManager* contextManager
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, CIrrDeviceIPhone* device , CIrrDeviceIPhone* device
#endif #endif
@ -2872,7 +2883,7 @@ IVideoDriver* createOGLES2Driver(const SIrrlichtCreationParameters& params,
#ifdef _IRR_COMPILE_WITH_OGLES2_ #ifdef _IRR_COMPILE_WITH_OGLES2_
return new COGLES2Driver(params, data, io return new COGLES2Driver(params, data, io
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, eglManager , contextManager
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, device , device
#endif #endif

View File

@ -65,7 +65,7 @@ namespace video
COGLES2Driver(const SIrrlichtCreationParameters& params, COGLES2Driver(const SIrrlichtCreationParameters& params,
const SExposedVideoData& data, io::IFileSystem* io const SExposedVideoData& data, io::IFileSystem* io
#if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #if defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
, CEGLManager* eglManager , IContextManager* contextManager
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_) #elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
, CIrrDeviceIPhone* device , CIrrDeviceIPhone* device
#endif #endif
@ -459,7 +459,7 @@ namespace video
GLuint ViewRenderbuffer; GLuint ViewRenderbuffer;
GLuint ViewDepthRenderbuffer; GLuint ViewDepthRenderbuffer;
#elif defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) #elif defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_WINDOWS_API_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
CEGLManager* EGLManager; IContextManager* ContextManager;
#endif #endif
}; };
@ -534,4 +534,3 @@ namespace video
#endif // _IRR_COMPILE_WITH_OPENGL_ #endif // _IRR_COMPILE_WITH_OPENGL_
#endif #endif

View File

@ -53,6 +53,8 @@ COGLES1Driver::COGLES1Driver(const SIrrlichtCreationParameters& params,
return; return;
ContextManager->grab(); ContextManager->grab();
ContextManager->initialize();
ContextManager->createSurface();
ContextManager->createContext(); ContextManager->createContext();
WindowSize = params.WindowSize; WindowSize = params.WindowSize;
@ -3029,7 +3031,7 @@ namespace video
#ifndef _IRR_COMPILE_WITH_OGLES1_ #ifndef _IRR_COMPILE_WITH_OGLES1_
class IVideoDriver; class IVideoDriver;
class CEGLManager; class IContextManager;
#endif #endif
IVideoDriver* createOGLES1Driver(const SIrrlichtCreationParameters& params, IVideoDriver* createOGLES1Driver(const SIrrlichtCreationParameters& params,

View File

@ -335,7 +335,7 @@
</ProjectReference> </ProjectReference>
<Link> <Link>
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;libEGL.lib;libgles_cm.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;libEGL.lib;libglesv2.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\..\bin\Win32-visualstudio\Irrlicht.dll</OutputFile> <OutputFile>..\..\bin\Win32-visualstudio\Irrlicht.dll</OutputFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>libci.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>