Update: Merged in nlWindow patch from SVN.
This commit is contained in:
parent
574a07ae9c
commit
445b18e5e8
12 changed files with 42 additions and 24 deletions
|
@ -178,7 +178,7 @@ public:
|
||||||
|
|
||||||
// first param is the associated window.
|
// first param is the associated window.
|
||||||
// Must be a HWND for Windows (WIN32).
|
// Must be a HWND for Windows (WIN32).
|
||||||
virtual bool setDisplay(void* wnd, const GfxMode& mode, bool show = true, bool resizeable = true) throw(EBadDisplay)=0;
|
virtual bool setDisplay(nlWindow wnd, const GfxMode& mode, bool show = true, bool resizeable = true) throw(EBadDisplay)=0;
|
||||||
// Must be called after a setDisplay that initialize the mode
|
// Must be called after a setDisplay that initialize the mode
|
||||||
virtual bool setMode(const GfxMode& mode)=0;
|
virtual bool setMode(const GfxMode& mode)=0;
|
||||||
virtual bool getModes(std::vector<GfxMode> &modes)=0;
|
virtual bool getModes(std::vector<GfxMode> &modes)=0;
|
||||||
|
|
|
@ -138,7 +138,7 @@ public:
|
||||||
|
|
||||||
/// create the window.
|
/// create the window.
|
||||||
virtual bool setDisplay(const CMode &mode, bool show, bool resizeable);
|
virtual bool setDisplay(const CMode &mode, bool show, bool resizeable);
|
||||||
virtual bool setDisplay(void *wnd, const CMode &mode, bool show, bool resizeable);
|
virtual bool setDisplay(nlWindow wnd, const CMode &mode, bool show, bool resizeable);
|
||||||
virtual bool setMode(const CMode& mode);
|
virtual bool setMode(const CMode& mode);
|
||||||
virtual bool getModes(std::vector<CMode> &modes);
|
virtual bool getModes(std::vector<CMode> &modes);
|
||||||
virtual bool getCurrentScreenMode(CMode &mode);
|
virtual bool getCurrentScreenMode(CMode &mode);
|
||||||
|
|
|
@ -64,7 +64,7 @@ public:
|
||||||
*
|
*
|
||||||
* You can access the driver with CNELU::Driver.
|
* You can access the driver with CNELU::Driver.
|
||||||
*/
|
*/
|
||||||
static bool initDriver(uint w, uint h, uint bpp=32, bool windowed=true, void *systemWindow=NULL, bool offscreen=false, bool direct3d=false) throw(EDru);
|
static bool initDriver(uint w, uint h, uint bpp=32, bool windowed=true, nlWindow systemWindow=EmptyWindow, bool offscreen=false, bool direct3d=false) throw(EDru);
|
||||||
|
|
||||||
/** Init all that we need for a Scene.
|
/** Init all that we need for a Scene.
|
||||||
* - register scene basics models,
|
* - register scene basics models,
|
||||||
|
@ -108,7 +108,7 @@ public:
|
||||||
* - initScene();
|
* - initScene();
|
||||||
* - initEventServer();
|
* - initEventServer();
|
||||||
*/
|
*/
|
||||||
static bool init(uint w, uint h, CViewport viewport=CViewport(), uint bpp=32, bool windowed=true, void *systemWindow=NULL, bool offscreen = false, bool direct3d = false) throw(EDru);
|
static bool init(uint w, uint h, CViewport viewport=CViewport(), uint bpp=32, bool windowed=true, nlWindow systemWindow=EmptyWindow, bool offscreen = false, bool direct3d = false) throw(EDru);
|
||||||
|
|
||||||
/** Delete all:
|
/** Delete all:
|
||||||
* - releaseEventServer();
|
* - releaseEventServer();
|
||||||
|
|
|
@ -178,7 +178,7 @@ public:
|
||||||
* \param show show or hide the window in window mode.
|
* \param show show or hide the window in window mode.
|
||||||
*/
|
*/
|
||||||
virtual bool setDisplay(const CMode &mode, bool show = true, bool resizeable = true) =0;
|
virtual bool setDisplay(const CMode &mode, bool show = true, bool resizeable = true) =0;
|
||||||
virtual bool setDisplay(void *wnd, const CMode &mode, bool show = true, bool resizeable = true) =0;
|
virtual bool setDisplay(nlWindow wnd, const CMode &mode, bool show = true, bool resizeable = true) =0;
|
||||||
virtual bool setMode(const CMode& mode)=0;
|
virtual bool setMode(const CMode& mode)=0;
|
||||||
virtual bool getModes(std::vector<CMode> &modes)=0;
|
virtual bool getModes(std::vector<CMode> &modes)=0;
|
||||||
virtual bool getCurrentScreenMode(CMode &mode)=0;
|
virtual bool getCurrentScreenMode(CMode &mode)=0;
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# include <process.h>
|
# include <process.h>
|
||||||
# include <intrin.h>
|
# include <intrin.h>
|
||||||
|
# include <windows.h>
|
||||||
#else
|
#else
|
||||||
# include <cmath>
|
# include <cmath>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
|
@ -41,6 +42,13 @@
|
||||||
|
|
||||||
#include "string_common.h"
|
#include "string_common.h"
|
||||||
|
|
||||||
|
#ifdef NL_OS_WINDOWS
|
||||||
|
typedef HWND nlWindow;
|
||||||
|
#define EmptyWindow NULL
|
||||||
|
#else
|
||||||
|
typedef int nlWindow;
|
||||||
|
#define EmptyWindow 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/// This namespace contains all miscellaneous classes used by other modules
|
/// This namespace contains all miscellaneous classes used by other modules
|
||||||
namespace NLMISC
|
namespace NLMISC
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace NL3D
|
||||||
{
|
{
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
const uint32 IDriver::InterfaceVersion = 0x63; // added supportNonPowerOfTwoTextures()
|
const uint32 IDriver::InterfaceVersion = 0x64; // Added nlWindow patch.
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
IDriver::IDriver() : _SyncTexDrvInfos( "IDriver::_SyncTexDrvInfos" )
|
IDriver::IDriver() : _SyncTexDrvInfos( "IDriver::_SyncTexDrvInfos" )
|
||||||
|
|
|
@ -1295,7 +1295,7 @@ const D3DFORMAT FinalPixelFormat[ITexture::UploadFormatCount][CDriverD3D::FinalP
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
bool CDriverD3D::setDisplay(void* wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay)
|
bool CDriverD3D::setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay)
|
||||||
{
|
{
|
||||||
H_AUTO_D3D(CDriver3D_setDisplay);
|
H_AUTO_D3D(CDriver3D_setDisplay);
|
||||||
if (!_D3D)
|
if (!_D3D)
|
||||||
|
|
|
@ -737,7 +737,7 @@ public:
|
||||||
|
|
||||||
// Mode initialisation, requests
|
// Mode initialisation, requests
|
||||||
virtual bool init (uint windowIcon = 0, emptyProc exitFunc = 0);
|
virtual bool init (uint windowIcon = 0, emptyProc exitFunc = 0);
|
||||||
virtual bool setDisplay(void* wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay);
|
virtual bool setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay);
|
||||||
virtual bool release();
|
virtual bool release();
|
||||||
virtual bool setMode(const GfxMode& mode);
|
virtual bool setMode(const GfxMode& mode);
|
||||||
virtual bool getModes(std::vector<GfxMode> &modes);
|
virtual bool getModes(std::vector<GfxMode> &modes);
|
||||||
|
|
|
@ -98,7 +98,7 @@ uint CDriverGL::_Registered=0;
|
||||||
#endif // NL_OS_WINDOWS
|
#endif // NL_OS_WINDOWS
|
||||||
|
|
||||||
// Version of the driver. Not the interface version!! Increment when implementation of the driver change.
|
// Version of the driver. Not the interface version!! Increment when implementation of the driver change.
|
||||||
const uint32 CDriverGL::ReleaseVersion = 0xf;
|
const uint32 CDriverGL::ReleaseVersion = 0x10;
|
||||||
|
|
||||||
// Number of register to allocate for the EXTVertexShader extension
|
// Number of register to allocate for the EXTVertexShader extension
|
||||||
const uint CDriverGL::_EVSNumConstant = 97;
|
const uint CDriverGL::_EVSNumConstant = 97;
|
||||||
|
@ -551,7 +551,7 @@ void CDriverGL::disableHardwareTextureShader()
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
|
|
||||||
bool CDriverGL::setDisplay(void *wnd, const GfxMode &mode, bool show, bool resizeable) throw(EBadDisplay)
|
bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool resizeable) throw(EBadDisplay)
|
||||||
{
|
{
|
||||||
H_AUTO_OGL(CDriverGL_setDisplay)
|
H_AUTO_OGL(CDriverGL_setDisplay)
|
||||||
|
|
||||||
|
@ -1091,10 +1091,7 @@ bool CDriverGL::setDisplay(void *wnd, const GfxMode &mode, bool show, bool resiz
|
||||||
nldebug("3D: glXCreateContext() OK");
|
nldebug("3D: glXCreateContext() OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
Colormap cmap = XCreateColormap (dpy, RootWindow(dpy, DefaultScreen(dpy)), visual_info->visual, AllocNone);
|
|
||||||
|
|
||||||
XSetWindowAttributes attr;
|
XSetWindowAttributes attr;
|
||||||
attr.colormap = cmap;
|
|
||||||
attr.background_pixel = BlackPixel(dpy, DefaultScreen(dpy));
|
attr.background_pixel = BlackPixel(dpy, DefaultScreen(dpy));
|
||||||
|
|
||||||
#ifdef XF86VIDMODE
|
#ifdef XF86VIDMODE
|
||||||
|
@ -1113,17 +1110,30 @@ bool CDriverGL::setDisplay(void *wnd, const GfxMode &mode, bool show, bool resiz
|
||||||
attr.override_redirect = False;
|
attr.override_redirect = False;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int attr_flags = CWOverrideRedirect | CWColormap | CWBackPixel;
|
int attr_flags = CWOverrideRedirect | CWBackPixel;
|
||||||
|
|
||||||
win = XCreateWindow (dpy, RootWindow(dpy, DefaultScreen(dpy)), 0, 0, width, height, 0, visual_info->depth, InputOutput, visual_info->visual, attr_flags, &attr);
|
if(wnd == EmptyWindow)
|
||||||
|
|
||||||
if(!win)
|
|
||||||
{
|
{
|
||||||
nlerror("XCreateWindow() failed");
|
nlWindow root = RootWindow(dpy, DefaultScreen(dpy));
|
||||||
|
|
||||||
|
attr.colormap = XCreateColormap(dpy, root, visual_info->visual, AllocNone);
|
||||||
|
attr_flags |= CWColormap;
|
||||||
|
|
||||||
|
win = XCreateWindow (dpy, root, 0, 0, width, height, 0, visual_info->depth, InputOutput, visual_info->visual, attr_flags, &attr);
|
||||||
|
|
||||||
|
if (win == EmptyWindow)
|
||||||
|
{
|
||||||
|
nlerror("3D: XCreateWindow() failed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nldebug("3D: XCreateWindow() OK");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nldebug("3D: XCreateWindow() OK");
|
win = wnd;
|
||||||
|
XChangeWindowAttributes(dpy, win, attr_flags, &attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
XSizeHints size_hints;
|
XSizeHints size_hints;
|
||||||
|
|
|
@ -283,7 +283,7 @@ public:
|
||||||
virtual void disableHardwareVertexArrayAGP();
|
virtual void disableHardwareVertexArrayAGP();
|
||||||
virtual void disableHardwareTextureShader();
|
virtual void disableHardwareTextureShader();
|
||||||
|
|
||||||
virtual bool setDisplay(void* wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay);
|
virtual bool setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeable) throw(EBadDisplay);
|
||||||
virtual bool setMode(const GfxMode& mode);
|
virtual bool setMode(const GfxMode& mode);
|
||||||
virtual bool getModes(std::vector<GfxMode> &modes);
|
virtual bool getModes(std::vector<GfxMode> &modes);
|
||||||
virtual bool getCurrentScreenMode(GfxMode &mode);
|
virtual bool getCurrentScreenMode(GfxMode &mode);
|
||||||
|
|
|
@ -224,11 +224,11 @@ bool CDriverUser::setDisplay(const CMode &mode, bool show, bool resizeable)
|
||||||
{
|
{
|
||||||
NL3D_HAUTO_UI_DRIVER;
|
NL3D_HAUTO_UI_DRIVER;
|
||||||
|
|
||||||
return setDisplay(NULL, mode, show, resizeable);
|
return setDisplay(EmptyWindow, mode, show, resizeable);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CDriverUser::setDisplay(void *wnd, const CMode &mode, bool show, bool resizeable)
|
bool CDriverUser::setDisplay(nlWindow wnd, const CMode &mode, bool show, bool resizeable)
|
||||||
{
|
{
|
||||||
NL3D_HAUTO_UI_DRIVER;
|
NL3D_HAUTO_UI_DRIVER;
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ CEventServer CNELU::EventServer;
|
||||||
CEventListenerAsync CNELU::AsyncListener;
|
CEventListenerAsync CNELU::AsyncListener;
|
||||||
|
|
||||||
|
|
||||||
bool CNELU::initDriver (uint w, uint h, uint bpp, bool windowed, void *systemWindow, bool offscreen, bool direct3d) throw(EDru)
|
bool CNELU::initDriver (uint w, uint h, uint bpp, bool windowed, nlWindow systemWindow, bool offscreen, bool direct3d) throw(EDru)
|
||||||
{
|
{
|
||||||
// Init debug system
|
// Init debug system
|
||||||
// NLMISC::InitDebug();
|
// NLMISC::InitDebug();
|
||||||
|
@ -174,7 +174,7 @@ void CNELU::releaseDriver()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CNELU::init (uint w, uint h, CViewport viewport, uint bpp, bool windowed, void *systemWindow, bool offscreen, bool direct3d) throw(EDru)
|
bool CNELU::init (uint w, uint h, CViewport viewport, uint bpp, bool windowed, nlWindow systemWindow, bool offscreen, bool direct3d) throw(EDru)
|
||||||
{
|
{
|
||||||
NL3D::registerSerial3d();
|
NL3D::registerSerial3d();
|
||||||
if (initDriver(w,h,bpp,windowed,systemWindow,offscreen,direct3d))
|
if (initDriver(w,h,bpp,windowed,systemWindow,offscreen,direct3d))
|
||||||
|
|
Loading…
Reference in a new issue