From a4c86ddf2074a0c0e77f2bc4fcd19ee7a7a5faa2 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Wed, 18 Jun 2014 16:29:02 +0200 Subject: [PATCH] Fix D3D driver compile under MinGW --- code/nel/include/nel/3d/driver.h | 2 +- code/nel/include/nel/3d/skeleton_model.h | 2 +- .../nel/src/3d/driver/direct3d/CMakeLists.txt | 2 +- .../3d/driver/direct3d/driver_direct3d.cpp | 20 ++++++++++++------- .../3d/driver/direct3d/driver_direct3d.def | 6 ++++-- .../src/3d/driver/direct3d/driver_direct3d.h | 6 +++--- .../driver/direct3d/driver_direct3d_index.cpp | 2 +- .../direct3d/driver_direct3d_texture.cpp | 4 ++-- .../direct3d/driver_direct3d_vertex.cpp | 4 ++-- code/nel/src/3d/driver/direct3d/stddirect3d.h | 4 +++- code/nel/src/3d/driver/opengl/driver_opengl.h | 2 +- .../driver/opengl/driver_opengl_texture.cpp | 2 +- 12 files changed, 33 insertions(+), 23 deletions(-) diff --git a/code/nel/include/nel/3d/driver.h b/code/nel/include/nel/3d/driver.h index c04fffcdf..022246838 100644 --- a/code/nel/include/nel/3d/driver.h +++ b/code/nel/include/nel/3d/driver.h @@ -1341,7 +1341,7 @@ public: * NB: if implementation does not support it, 0 may be returned. OpenGL ones return the Texture ID. * NB: unlike isTextureExist(), this method is not thread safe. */ - virtual uint getTextureHandle(const ITexture&tex) = 0; + virtual uintptr_t getTextureHandle(const ITexture&tex) = 0; // see if the Multiply-Add Tex Env operator is supported (see CMaterial::Mad) virtual bool supportMADOperator() const = 0; diff --git a/code/nel/include/nel/3d/skeleton_model.h b/code/nel/include/nel/3d/skeleton_model.h index ed4f8aadc..dccafd1f1 100644 --- a/code/nel/include/nel/3d/skeleton_model.h +++ b/code/nel/include/nel/3d/skeleton_model.h @@ -54,7 +54,7 @@ public: // The index of the skin rdrPass uint16 RdrPassIndex; // The texture id of the specular texture. This is the sort Key. - uint32 SpecId; + uintptr_t SpecId; bool operator<(const CSkinSpecularRdrPass &o) const { diff --git a/code/nel/src/3d/driver/direct3d/CMakeLists.txt b/code/nel/src/3d/driver/direct3d/CMakeLists.txt index ede76f06c..ccdb8cb10 100644 --- a/code/nel/src/3d/driver/direct3d/CMakeLists.txt +++ b/code/nel/src/3d/driver/direct3d/CMakeLists.txt @@ -10,7 +10,7 @@ NL_DEFAULT_PROPS(nel_drv_direct3d_win "NeL, Driver, Video: Direct3D") NL_ADD_RUNTIME_FLAGS(nel_drv_direct3d_win) NL_ADD_LIB_SUFFIX(nel_drv_direct3d_win) -ADD_DEFINITIONS(/Ddriver_direct3d_EXPORTS) +ADD_DEFINITIONS(-DRIVER_DIRECT3D_EXPORTS) IF(WITH_PCH) ADD_NATIVE_PRECOMPILED_HEADER(nel_drv_direct3d_win ${CMAKE_CURRENT_SOURCE_DIR}/stddirect3d.h ${CMAKE_CURRENT_SOURCE_DIR}/stddirect3d.cpp) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 814ddbf1c..2316119a2 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -110,6 +110,10 @@ IDriver* createD3DDriverInstance () #else +#ifdef NL_COMP_MINGW +extern "C" +{ +#endif __declspec(dllexport) IDriver* NL3D_createIDriverInstance () { return new CDriverD3D; @@ -119,7 +123,9 @@ __declspec(dllexport) uint32 NL3D_interfaceVersion () { return IDriver::InterfaceVersion; } - +#ifdef NL_COMP_MINGW +} +#endif #endif /*static*/ bool CDriverD3D::_CacheTest[CacheTest_Count] = @@ -379,7 +385,7 @@ void CDriverD3D::resetRenderVariables() } for (i=0; iCreateDevice (adapter, _Rasterizer, _HWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_PUREDEVICE, ¶meters, &_DeviceInterface); if (result != D3D_OK) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.def b/code/nel/src/3d/driver/direct3d/driver_direct3d.def index 2e32d9601..7e6b29b2e 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.def +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.def @@ -1,2 +1,4 @@ -EXPORTS NL3D_createIDriverInstance -EXPORTS NL3D_interfaceVersion \ No newline at end of file +LIBRARY nel_drv_direct3d_win_r +EXPORTS + NL3D_createIDriverInstance + NL3D_interfaceVersion \ No newline at end of file diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.h b/code/nel/src/3d/driver/direct3d/driver_direct3d.h index 36a1c9804..254b21871 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.h +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.h @@ -953,7 +953,7 @@ public: virtual void setSwapVBLInterval(uint interval); virtual uint getSwapVBLInterval(); virtual void swapTextureHandle(ITexture &tex0, ITexture &tex1); - virtual uint getTextureHandle(const ITexture&tex); + virtual uintptr_t getTextureHandle(const ITexture&tex); // Matrix, viewport and frustum virtual void setFrustum(float left, float right, float bottom, float top, float znear, float zfar, bool perspective = true); @@ -1893,7 +1893,7 @@ public: H_AUTO_D3D(CDriverD3D_setSamplerState); nlassert (_DeviceInterface); nlassert (samplerTexture); + return (uintptr_t)(d3dtext->Texture); } // *************************************************************************** diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d_vertex.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d_vertex.cpp index 9882a5ce1..b798acb26 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d_vertex.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d_vertex.cpp @@ -59,7 +59,7 @@ CVBDrvInfosD3D::CVBDrvInfosD3D(CDriverD3D *drv, ItVBDrvInfoPtrList it, CVertexBu // *************************************************************************** -extern uint vertexCount=0; +uint vertexCount=0; CVBDrvInfosD3D::~CVBDrvInfosD3D() { @@ -173,7 +173,7 @@ uint8 *CVBDrvInfosD3D::lock (uint begin, uint end, bool readOnly) void *pbData; if (VertexBuffer->Lock ( begin, end-begin, &pbData, readOnly?D3DLOCK_READONLY:0) != D3D_OK) - return false; + return NULL; // Lock Profile? if(driver->_VBHardProfiling /*&& Hardware*/) diff --git a/code/nel/src/3d/driver/direct3d/stddirect3d.h b/code/nel/src/3d/driver/direct3d/stddirect3d.h index a243bf816..c7b6f7f3e 100644 --- a/code/nel/src/3d/driver/direct3d/stddirect3d.h +++ b/code/nel/src/3d/driver/direct3d/stddirect3d.h @@ -19,7 +19,9 @@ #ifdef NL_OS_WINDOWS # define WIN32_LEAN_AND_MEAN -# define NOMINMAX +# ifndef NL_COMP_MINGW +# define NOMINMAX +# endif # include #endif diff --git a/code/nel/src/3d/driver/opengl/driver_opengl.h b/code/nel/src/3d/driver/opengl/driver_opengl.h index 46d12eef1..6217ea850 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl.h @@ -632,7 +632,7 @@ public: virtual void swapTextureHandle(ITexture &tex0, ITexture &tex1); - virtual uint getTextureHandle(const ITexture&tex); + virtual uintptr_t getTextureHandle(const ITexture&tex); /// \name Material multipass. /** NB: setupMaterial() must be called before thoses methods. diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_texture.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_texture.cpp index 96d95bd5d..f26b53254 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_texture.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_texture.cpp @@ -2269,7 +2269,7 @@ void CDriverGL::swapTextureHandle(ITexture &tex0, ITexture &tex1) // *************************************************************************** -uint CDriverGL::getTextureHandle(const ITexture &tex) +uintptr_t CDriverGL::getTextureHandle(const ITexture &tex) { H_AUTO_OGL(CDriverGL_getTextureHandle) // If DrvShare not setuped