From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/driver__user_8cpp-source.html | 1309 ++++++++++++++++++++++++ 1 file changed, 1309 insertions(+) create mode 100644 docs/doxygen/nel/driver__user_8cpp-source.html (limited to 'docs/doxygen/nel/driver__user_8cpp-source.html') diff --git a/docs/doxygen/nel/driver__user_8cpp-source.html b/docs/doxygen/nel/driver__user_8cpp-source.html new file mode 100644 index 00000000..ab1f17cd --- /dev/null +++ b/docs/doxygen/nel/driver__user_8cpp-source.html @@ -0,0 +1,1309 @@ + + + + nevrax.org : docs + + + + + + + + + + + + + + +
# Home   # nevrax.com   
+ + + + +
Nevrax
+ + + + + + + + + + +
+ + +
+ Nevrax.org
+ + + + + + + +
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
+
+ + +
+ + +
+Docs + +
+  + + + + + +
Documentation 
+ +
+Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  
+

driver_user.cpp

Go to the documentation of this file.
00001 
+00007 /* Copyright, 2001 Nevrax Ltd.
+00008  *
+00009  * This file is part of NEVRAX NEL.
+00010  * NEVRAX NEL is free software; you can redistribute it and/or modify
+00011  * it under the terms of the GNU General Public License as published by
+00012  * the Free Software Foundation; either version 2, or (at your option)
+00013  * any later version.
+00014 
+00015  * NEVRAX NEL is distributed in the hope that it will be useful, but
+00016  * WITHOUT ANY WARRANTY; without even the implied warranty of
+00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+00018  * General Public License for more details.
+00019 
+00020  * You should have received a copy of the GNU General Public License
+00021  * along with NEVRAX NEL; see the file COPYING. If not, write to the
+00022  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+00023  * MA 02111-1307, USA.
+00024  */
+00025 
+00026 #include "std3d.h"
+00027 
+00028 // ***************************************************************************
+00029 // THIS FILE IS DIVIDED IN TWO PARTS BECAUSE IT MAKES VISUAL CRASH.
+00030 // fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
+00031 // ***************************************************************************
+00032 
+00033 #include "3d/driver_user.h"
+00034 #include "nel/3d/u_driver.h"
+00035 #include "3d/dru.h"
+00036 #include "3d/scene.h"
+00037 #include "3d/text_context_user.h"
+00038 #include "3d/texture_user.h"
+00039 #include "3d/material_user.h"
+00040 #include "3d/scene_user.h"
+00041 #include "3d/init_3d.h"
+00042 #include "nel/3d/u_camera.h"
+00043 #include "nel/misc/hierarchical_timer.h"
+00044 
+00045 
+00046 using namespace NLMISC;
+00047 
+00048 namespace NL3D 
+00049 {
+00050 
+00051 H_AUTO_DECL( NL3D_UI_Driver )
+00052 H_AUTO_DECL( NL3D_Render_DriverClearBuffer )
+00053 H_AUTO_DECL( NL3D_Render_DriverSwapBuffer )
+00054 H_AUTO_DECL( NL3D_Render_DriverDrawELT )
+00055 
+00056 #define NL3D_HAUTO_UI_DRIVER                            H_AUTO_USE( NL3D_UI_Driver )
+00057 #define NL3D_HAUTO_CLEAR_DRIVER                         H_AUTO_USE( NL3D_Render_DriverClearBuffer )
+00058 #define NL3D_HAUTO_SWAP_DRIVER                          H_AUTO_USE( NL3D_Render_DriverSwapBuffer )
+00059 #define NL3D_HAUTO_DRAW_DRIVER                          H_AUTO_USE( NL3D_Render_DriverDrawELT )
+00060 
+00061 // ***************************************************************************
+00062 // ***************************************************************************
+00063 // UDriver implementation (gcc link bug force to not put them in .h).
+00064 // ***************************************************************************
+00065 // ***************************************************************************
+00066 
+00067 
+00068 // ***************************************************************************
+00069 UDriver::UDriver()
+00070 {
+00071         NL3D_MEM_DRIVER
+00072 }
+00073 // ***************************************************************************
+00074 UDriver::~UDriver()
+00075 {
+00076         NL3D_MEM_DRIVER
+00077 }
+00078 
+00079 
+00080 // ***************************************************************************
+00081 void                                    UDriver::setMatrixMode2D11()
+00082 {
+00083         NL3D_MEM_DRIVER
+00084         setMatrixMode2D(CFrustum(0.0f,1.0f,0.0f,1.0f,-1.0f,1.0f,false));
+00085 }
+00086 // ***************************************************************************
+00087 void                                    UDriver::setMatrixMode2D43()
+00088 {
+00089         NL3D_MEM_DRIVER
+00090         setMatrixMode2D(CFrustum(0.0f,4.0f/3.0f,0.0f,1.0f,-1.0f,1.0f,false));
+00091 }
+00092 
+00093 
+00094 // ***************************************************************************
+00095 UDriver                                 *UDriver::createDriver()
+00096 {
+00097         NL3D_MEM_DRIVER
+00098         return new CDriverUser;
+00099 }
+00100 
+00101 
+00102 // ***************************************************************************
+00103 // ***************************************************************************
+00104 // WINDOWS Management.
+00105 // ***************************************************************************
+00106 // ***************************************************************************
+00107 
+00108 
+00109 // ***************************************************************************
+00110 bool    CDriverUser::_StaticInit= false;
+00111 
+00112 
+00113 // ***************************************************************************
+00114 CDriverUser::CDriverUser()
+00115 {
+00116         NL3D_MEM_DRIVER
+00117 
+00118         // The enum of IDriver and UDriver MUST be the same!!!
+00119         nlassert((uint)IDriver::idCount == (uint)UDriver::idCount);
+00120         nlassert((uint)IDriver::typeCount == (uint)UDriver::typeCount);
+00121         nlassert((uint)IDriver::iconCount == (uint)UDriver::iconCount);
+00122 
+00123 
+00124         // Static Initialisation.
+00125         if(!_StaticInit)
+00126         {
+00127                 _StaticInit= true;
+00128                 // Register basic serial.
+00129                 NL3D::registerSerial3d();
+00130 
+00131                 // Register basic csene.
+00132                 CScene::registerBasics();
+00133         }
+00134 
+00135         // Create/Init Driver.
+00136         _Driver= CDRU::createGlDriver();
+00137         nlassert(_Driver);
+00138         _Driver->init();
+00139 
+00140         _WindowInit= false;
+00141 
+00142         // Init of VBuffers/PBs for 2D/3D interface.
+00143         _VBFlat.setVertexFormat(CVertexBuffer::PositionFlag);
+00144         _VBColor.setVertexFormat(CVertexBuffer::PositionFlag | CVertexBuffer::PrimaryColorFlag);
+00145         _VBUv.setVertexFormat(CVertexBuffer::PositionFlag | CVertexBuffer::TexCoord0Flag);
+00146         _VBColorUv.setVertexFormat(CVertexBuffer::PositionFlag | CVertexBuffer::PrimaryColorFlag | CVertexBuffer::TexCoord0Flag);
+00147         _VBQuadsColUv.setVertexFormat(CVertexBuffer::PositionFlag | CVertexBuffer::PrimaryColorFlag | CVertexBuffer::TexCoord0Flag);
+00148         // max is quad.
+00149         _VBFlat.setNumVertices(4);
+00150         _VBColor.setNumVertices(4);
+00151         _VBUv.setNumVertices(4);
+00152         _VBColorUv.setNumVertices(4); 
+00153 
+00154         _PBLine.setNumLine(1);
+00155         _PBLine.setLine(0, 0, 1);
+00156         _PBTri.setNumTri(1);
+00157         _PBTri.setTri(0, 0, 1, 2);
+00158         _PBQuad.setNumQuad(1);
+00159         _PBQuad.setQuad(0, 0, 1, 2, 3);
+00160 
+00161 }
+00162 // ***************************************************************************
+00163 CDriverUser::~CDriverUser()
+00164 {
+00165         NL3D_MEM_DRIVER
+00166         release();
+00167 
+00168         delete _Driver;
+00169         _Driver= NULL;
+00170 }
+00171 
+00172 // ***************************************************************************
+00173 UDriver::TModeList              CDriverUser::enumModes()
+00174 {
+00175         NL3D_HAUTO_UI_DRIVER;
+00176         NL3D_MEM_DRIVER
+00177 
+00178         ModeList        dlist;
+00179         TModeList       retlist;
+00180 
+00181         dlist= _Driver->enumModes();
+00182         for(sint i=0;i<(sint)dlist.size();i++)
+00183         {
+00184                 retlist.push_back(CMode(dlist[i].Width, dlist[i].Height, dlist[i].Depth, dlist[i].Windowed));
+00185         }
+00186 
+00187         return retlist;
+00188 }
+00189 
+00190 // ***************************************************************************
+00191 void                    CDriverUser::disableHardwareVertexProgram()
+00192 {
+00193         NL3D_MEM_DRIVER
+00194         NL3D_HAUTO_UI_DRIVER;
+00195 
+00196         _Driver->disableHardwareVertexProgram();
+00197 }
+00198 void                    CDriverUser::disableHardwareVertexArrayAGP()
+00199 {
+00200         NL3D_MEM_DRIVER
+00201         NL3D_HAUTO_UI_DRIVER;
+00202 
+00203         _Driver->disableHardwareVertexArrayAGP();
+00204 }
+00205 void                    CDriverUser::disableHardwareTextureShader()
+00206 {
+00207         NL3D_MEM_DRIVER
+00208         NL3D_HAUTO_UI_DRIVER;
+00209 
+00210         _Driver->disableHardwareTextureShader();
+00211 }
+00212 
+00213 // ***************************************************************************
+00214 void                    CDriverUser::setDisplay(const CMode &mode) 
+00215 {
+00216         NL3D_MEM_DRIVER
+00217         NL3D_HAUTO_UI_DRIVER;
+00218 
+00219         // window init.
+00220         nlverify(_Driver->setDisplay(NULL, GfxMode(mode.Width, mode.Height, mode.Depth, mode.Windowed)));
+00221         nlverify(activate());
+00222         _WindowInit= true;
+00223 
+00224         // Event init.
+00225         AsyncListener.reset ();
+00226         EventServer.addEmitter(_Driver->getEventEmitter());
+00227         AsyncListener.addToServer(EventServer);
+00228 
+00229         // Matrix Context (2D).
+00230         _CurrentMatrixContext.Viewport.initFullScreen();
+00231         _CurrentMatrixContext.Scissor.initFullScreen();
+00232         setMatrixMode2D11();
+00233 
+00234         // 2D Material.
+00235         _MatFlat.initUnlit();
+00236         _MatFlat.setZFunc(UMaterial::always);
+00237         _MatFlat.setZWrite(false);
+00238         _MatText.initUnlit();
+00239         _MatText.setZFunc(UMaterial::always);
+00240         _MatText.setZWrite(false);
+00241 
+00242 }
+00243 // ***************************************************************************
+00244 void                    CDriverUser::release() 
+00245 {
+00246         NL3D_MEM_DRIVER
+00247         NL3D_HAUTO_UI_DRIVER;
+00248 
+00249         if(!_WindowInit)
+00250                 return;
+00251 
+00252         // 2D Material.
+00253         _MatFlat.initUnlit();
+00254         _MatText.initUnlit();
+00255 
+00256         // delete Texture, mat ... list.
+00257         _Textures.clear();
+00258         _Materials.clear();
+00259         _TextContexts.clear();
+00260         _Scenes.clear();
+00261 
+00262         // release event.
+00263         AsyncListener.removeFromServer(EventServer);
+00264         EventServer.removeEmitter(_Driver->getEventEmitter());
+00265 
+00266         // release window.
+00267         _Driver->release();
+00268         _WindowInit= false;
+00269 }
+00270 
+00271 
+00272 // ***************************************************************************
+00273 bool                    CDriverUser::activate(void)
+00274 {
+00275         NL3D_MEM_DRIVER
+00276         NL3D_HAUTO_UI_DRIVER;
+00277 
+00278         return _Driver->activate();
+00279 }
+00280 
+00281 // ***************************************************************************
+00282 bool                    CDriverUser::isActive()
+00283 {
+00284         NL3D_MEM_DRIVER
+00285         NL3D_HAUTO_UI_DRIVER;
+00286 
+00287         return _Driver->isActive();
+00288 }
+00289 
+00290 
+00291 
+00292 // ***************************************************************************
+00293 // ***************************************************************************
+00294 // Matrix context.
+00295 // ***************************************************************************
+00296 // ***************************************************************************
+00297 
+00298 
+00299 // ***************************************************************************
+00300 void                    CDriverUser::setupMatrixContext()
+00301 {
+00302         NL3D_MEM_DRIVER
+00303 
+00304         _Driver->setupScissor(_CurrentMatrixContext.Scissor);
+00305         _Driver->setupViewport(_CurrentMatrixContext.Viewport);
+00306         CFrustum        &f= _CurrentMatrixContext.Frustum;
+00307         _Driver->setFrustum(f.Left, f.Right, f.Bottom, f.Top, f.Near, f.Far, f.Perspective);
+00308         _Driver->setupViewMatrix(_CurrentMatrixContext.ViewMatrix);
+00309         _Driver->setupModelMatrix(_CurrentMatrixContext.ModelMatrix);
+00310 }
+00311 // ***************************************************************************
+00312 void                    CDriverUser::setScissor(const CScissor &sc)
+00313 {
+00314         NL3D_MEM_DRIVER
+00315         NL3D_HAUTO_UI_DRIVER;
+00316 
+00317         _CurrentMatrixContext.Scissor= sc;
+00318         setupMatrixContext();
+00319 }
+00320 // ***************************************************************************
+00321 CScissor                CDriverUser::getScissor()
+00322 {
+00323         NL3D_MEM_DRIVER
+00324         NL3D_HAUTO_UI_DRIVER;
+00325 
+00326         return _CurrentMatrixContext.Scissor;
+00327 }
+00328 // ***************************************************************************
+00329 void                    CDriverUser::setViewport(const CViewport &vp)
+00330 {
+00331         NL3D_MEM_DRIVER
+00332         NL3D_HAUTO_UI_DRIVER;
+00333 
+00334         _CurrentMatrixContext.Viewport= vp;
+00335         setupMatrixContext();
+00336 }
+00337 // ***************************************************************************
+00338 CViewport               CDriverUser::getViewport()
+00339 {
+00340         NL3D_MEM_DRIVER
+00341         NL3D_HAUTO_UI_DRIVER;
+00342 
+00343         return _CurrentMatrixContext.Viewport;
+00344 }
+00345 // ***************************************************************************
+00346 void                    CDriverUser::setFrustum(const CFrustum &frust) 
+00347 {
+00348         NL3D_MEM_DRIVER
+00349         NL3D_HAUTO_UI_DRIVER;
+00350 
+00351         _CurrentMatrixContext.Frustum= frust;
+00352         setupMatrixContext();
+00353 }
+00354 // ***************************************************************************
+00355 CFrustum                CDriverUser::getFrustum() 
+00356 {
+00357         NL3D_MEM_DRIVER
+00358         NL3D_HAUTO_UI_DRIVER;
+00359 
+00360         return _CurrentMatrixContext.Frustum;
+00361 }
+00362 // ***************************************************************************
+00363 void                    CDriverUser::setViewMatrix(const CMatrix &mat) 
+00364 {
+00365         NL3D_MEM_DRIVER
+00366         NL3D_HAUTO_UI_DRIVER;
+00367 
+00368         _CurrentMatrixContext.ViewMatrix= mat;
+00369         setupMatrixContext();
+00370 }
+00371 // ***************************************************************************
+00372 CMatrix                 CDriverUser::getViewMatrix() 
+00373 {
+00374         NL3D_MEM_DRIVER
+00375         NL3D_HAUTO_UI_DRIVER;
+00376 
+00377         return _CurrentMatrixContext.ViewMatrix;
+00378 }
+00379 // ***************************************************************************
+00380 void                    CDriverUser::setModelMatrix(const CMatrix &mat) 
+00381 {
+00382         NL3D_MEM_DRIVER
+00383         NL3D_HAUTO_UI_DRIVER;
+00384 
+00385         _CurrentMatrixContext.ModelMatrix= mat;
+00386         setupMatrixContext();
+00387 }
+00388 // ***************************************************************************
+00389 CMatrix                 CDriverUser::getModelMatrix() 
+00390 {
+00391         NL3D_MEM_DRIVER
+00392         NL3D_HAUTO_UI_DRIVER;
+00393 
+00394         return _CurrentMatrixContext.ModelMatrix;
+00395 }
+00396 
+00397 
+00398 
+00399 // ***************************************************************************
+00400 void                    CDriverUser::setMatrixMode2D(const CFrustum &frust) 
+00401 {
+00402         NL3D_MEM_DRIVER
+00403         NL3D_HAUTO_UI_DRIVER;
+00404 
+00405         _CurrentMatrixContext.Frustum= frust;
+00406         // We still work in NL3D coordinates, so must convert y to z.
+00407         CVector         I(1,0,0);
+00408         CVector         J(0,0,1);
+00409         CVector         K(0,-1,0);
+00410 
+00411         _CurrentMatrixContext.ViewMatrix.identity();
+00412         _CurrentMatrixContext.ViewMatrix.setRot(I,J,K, true);
+00413         _CurrentMatrixContext.ModelMatrix.identity();
+00414 
+00415         setupMatrixContext();
+00416 }
+00417 // ***************************************************************************
+00418 void                    CDriverUser::setMatrixMode3D(UCamera &camera) 
+00419 {
+00420         NL3D_MEM_DRIVER
+00421         NL3D_HAUTO_UI_DRIVER;
+00422 
+00423         // Retrieve the matrix and frustum from the camera.
+00424         CMatrix         viewMat;
+00425         viewMat= camera.getMatrix();
+00426         viewMat.invert();
+00427         setViewMatrix(viewMat);
+00428         setModelMatrix(CMatrix::Identity);
+00429         setFrustum(camera.getFrustum());
+00430 }
+00431 
+00432 
+00433 // ***************************************************************************
+00434 // ***************************************************************************
+00435 // 2D/3D INTERFACE.
+00436 // ***************************************************************************
+00437 // ***************************************************************************
+00438 
+00439 // ***************************************************************************
+00440 void                    CDriverUser::drawLine(const NLMISC::CLine &shp, UMaterial &mat) 
+00441 {
+00442         NL3D_MEM_DRIVER
+00443         NL3D_HAUTO_DRAW_DRIVER;
+00444 
+00445         CVertexBuffer           &vb= _VBFlat;
+00446         CPrimitiveBlock         &pb= _PBLine;
+00447 
+00448         vb.setVertexCoord (0, shp.V0);
+00449         vb.setVertexCoord (1, shp.V1);
+00450         
+00451         _Driver->activeVertexBuffer(vb);
+00452         _Driver->render(pb, convMat(mat));
+00453 }
+00454 // ***************************************************************************
+00455 void                    CDriverUser::drawLine(const NLMISC::CLineColor &shp, UMaterial &mat) 
+00456 {
+00457         NL3D_MEM_DRIVER
+00458         NL3D_HAUTO_DRAW_DRIVER;
+00459 
+00460         CVertexBuffer           &vb= _VBColor;
+00461         CPrimitiveBlock         &pb= _PBLine;
+00462 
+00463         vb.setVertexCoord (0, shp.V0);
+00464         vb.setVertexCoord (1, shp.V1);
+00465         vb.setColor(0, shp.Color0);
+00466         vb.setColor(1, shp.Color1);
+00467         
+00468         _Driver->activeVertexBuffer(vb);
+00469         _Driver->render(pb, convMat(mat));
+00470 }
+00471 // ***************************************************************************
+00472 void                    CDriverUser::drawLine(const NLMISC::CLineUV &shp, UMaterial &mat) 
+00473 {
+00474         NL3D_MEM_DRIVER
+00475         NL3D_HAUTO_DRAW_DRIVER;
+00476 
+00477         CVertexBuffer           &vb= _VBUv;
+00478         CPrimitiveBlock         &pb= _PBLine;
+00479 
+00480         vb.setVertexCoord (0, shp.V0);
+00481         vb.setVertexCoord (1, shp.V1);
+00482         vb.setTexCoord (0, 0, shp.Uv0);
+00483         vb.setTexCoord (1, 0, shp.Uv1);
+00484         
+00485         _Driver->activeVertexBuffer(vb);
+00486         _Driver->render(pb, convMat(mat));
+00487 }
+00488 // ***************************************************************************
+00489 void                    CDriverUser::drawLine(const NLMISC::CLineColorUV &shp, UMaterial &mat) 
+00490 {
+00491         NL3D_MEM_DRIVER
+00492         NL3D_HAUTO_DRAW_DRIVER;
+00493 
+00494         CVertexBuffer           &vb= _VBColorUv;
+00495         CPrimitiveBlock         &pb= _PBLine;
+00496 
+00497         vb.setVertexCoord (0, shp.V0);
+00498         vb.setVertexCoord (1, shp.V1);
+00499         vb.setColor(0, shp.Color0);
+00500         vb.setColor(1, shp.Color1);
+00501         vb.setTexCoord (0, 0, shp.Uv0);
+00502         vb.setTexCoord (1, 0, shp.Uv1);
+00503         
+00504         _Driver->activeVertexBuffer(vb);
+00505         _Driver->render(pb, convMat(mat));
+00506 }
+00507 
+00508 
+00509 
+00510 // ***************************************************************************
+00511 void                    CDriverUser::drawTriangle(const NLMISC::CTriangle &shp, UMaterial &mat) 
+00512 {
+00513         NL3D_MEM_DRIVER
+00514         NL3D_HAUTO_DRAW_DRIVER;
+00515 
+00516         CVertexBuffer           &vb= _VBFlat;
+00517         CPrimitiveBlock         &pb= _PBTri;
+00518 
+00519         vb.setVertexCoord (0, shp.V0);
+00520         vb.setVertexCoord (1, shp.V1);
+00521         vb.setVertexCoord (2, shp.V2);
+00522         
+00523         _Driver->activeVertexBuffer(vb);
+00524         _Driver->render(pb, convMat(mat));
+00525 }
+00526 // ***************************************************************************
+00527 void                    CDriverUser::drawTriangle(const NLMISC::CTriangleColor &shp, UMaterial &mat) 
+00528 {
+00529         NL3D_MEM_DRIVER
+00530         NL3D_HAUTO_DRAW_DRIVER;
+00531 
+00532         CVertexBuffer           &vb= _VBColor;
+00533         CPrimitiveBlock         &pb= _PBTri;
+00534 
+00535         vb.setVertexCoord (0, shp.V0);
+00536         vb.setVertexCoord (1, shp.V1);
+00537         vb.setVertexCoord (2, shp.V2);
+00538         vb.setColor(0, shp.Color0);
+00539         vb.setColor(1, shp.Color1);
+00540         vb.setColor(2, shp.Color2);
+00541         
+00542         _Driver->activeVertexBuffer(vb);
+00543         _Driver->render(pb, convMat(mat));
+00544 }
+00545 // ***************************************************************************
+00546 void                    CDriverUser::drawTriangle(const NLMISC::CTriangleUV &shp, UMaterial &mat) 
+00547 {
+00548         NL3D_MEM_DRIVER
+00549         NL3D_HAUTO_DRAW_DRIVER;
+00550 
+00551         CVertexBuffer           &vb= _VBUv;
+00552         CPrimitiveBlock         &pb= _PBTri;
+00553 
+00554         vb.setVertexCoord (0, shp.V0);
+00555         vb.setVertexCoord (1, shp.V1);
+00556         vb.setVertexCoord (2, shp.V2);
+00557         vb.setTexCoord (0, 0, shp.Uv0);
+00558         vb.setTexCoord (1, 0, shp.Uv1);
+00559         vb.setTexCoord (2, 0, shp.Uv2);
+00560         
+00561         _Driver->activeVertexBuffer(vb);
+00562         _Driver->render(pb, convMat(mat));
+00563 }
+00564 // ***************************************************************************
+00565 void                    CDriverUser::drawTriangle(const NLMISC::CTriangleColorUV &shp, UMaterial &mat) 
+00566 {
+00567         NL3D_MEM_DRIVER
+00568         NL3D_HAUTO_DRAW_DRIVER;
+00569 
+00570         CVertexBuffer           &vb= _VBColorUv;
+00571         CPrimitiveBlock         &pb= _PBTri;
+00572 
+00573         vb.setVertexCoord (0, shp.V0);
+00574         vb.setVertexCoord (1, shp.V1);
+00575         vb.setVertexCoord (2, shp.V2);
+00576         vb.setColor(0, shp.Color0);
+00577         vb.setColor(1, shp.Color1);
+00578         vb.setColor(2, shp.Color2);
+00579         vb.setTexCoord (0, 0, shp.Uv0);
+00580         vb.setTexCoord (1, 0, shp.Uv1);
+00581         vb.setTexCoord (2, 0, shp.Uv2);
+00582         
+00583         _Driver->activeVertexBuffer(vb);
+00584         _Driver->render(pb, convMat(mat));
+00585 }
+00586 
+00587 
+00588 
+00589 // ***************************************************************************
+00590 void                    CDriverUser::drawQuad(const NLMISC::CQuad &shp, UMaterial &mat) 
+00591 {
+00592         NL3D_MEM_DRIVER
+00593         NL3D_HAUTO_DRAW_DRIVER;
+00594 
+00595         CVertexBuffer           &vb= _VBFlat;
+00596         CPrimitiveBlock         &pb= _PBQuad;
+00597 
+00598         vb.setVertexCoord (0, shp.V0);
+00599         vb.setVertexCoord (1, shp.V1);
+00600         vb.setVertexCoord (2, shp.V2);
+00601         vb.setVertexCoord (3, shp.V3);
+00602         
+00603         _Driver->activeVertexBuffer(vb);
+00604         _Driver->render(pb, convMat(mat));
+00605 }
+00606 // ***************************************************************************
+00607 void                    CDriverUser::drawQuad(const NLMISC::CQuadColor &shp, UMaterial &mat) 
+00608 {
+00609         NL3D_MEM_DRIVER
+00610         NL3D_HAUTO_DRAW_DRIVER;
+00611 
+00612         CVertexBuffer           &vb= _VBColor;
+00613         CPrimitiveBlock         &pb= _PBQuad;
+00614 
+00615         vb.setVertexCoord (0, shp.V0);
+00616         vb.setVertexCoord (1, shp.V1);
+00617         vb.setVertexCoord (2, shp.V2);
+00618         vb.setVertexCoord (3, shp.V3);
+00619         vb.setColor(0, shp.Color0);
+00620         vb.setColor(1, shp.Color1);
+00621         vb.setColor(2, shp.Color2);
+00622         vb.setColor(3, shp.Color3);
+00623         
+00624         _Driver->activeVertexBuffer(vb);
+00625         _Driver->render(pb, convMat(mat));
+00626 }
+00627 // ***************************************************************************
+00628 void                    CDriverUser::drawQuad(const NLMISC::CQuadUV &shp, UMaterial &mat) 
+00629 {
+00630         NL3D_MEM_DRIVER
+00631         NL3D_HAUTO_DRAW_DRIVER;
+00632 
+00633         CVertexBuffer           &vb= _VBUv;
+00634         CPrimitiveBlock         &pb= _PBQuad;
+00635 
+00636         vb.setVertexCoord (0, shp.V0);
+00637         vb.setVertexCoord (1, shp.V1);
+00638         vb.setVertexCoord (2, shp.V2);
+00639         vb.setVertexCoord (3, shp.V3);
+00640         vb.setTexCoord (0, 0, shp.Uv0);
+00641         vb.setTexCoord (1, 0, shp.Uv1);
+00642         vb.setTexCoord (2, 0, shp.Uv2);
+00643         vb.setTexCoord (3, 0, shp.Uv3);
+00644         
+00645         _Driver->activeVertexBuffer(vb);
+00646         _Driver->render(pb, convMat(mat));
+00647 }
+00648 // ***************************************************************************
+00649 void                    CDriverUser::drawQuad(const NLMISC::CQuadColorUV &shp, UMaterial &mat) 
+00650 {
+00651         NL3D_MEM_DRIVER
+00652         NL3D_HAUTO_DRAW_DRIVER;
+00653 
+00654         CVertexBuffer           &vb= _VBColorUv;
+00655         CPrimitiveBlock         &pb= _PBQuad;
+00656 
+00657         vb.setVertexCoord (0, shp.V0);
+00658         vb.setVertexCoord (1, shp.V1);
+00659         vb.setVertexCoord (2, shp.V2);
+00660         vb.setVertexCoord (3, shp.V3);
+00661         vb.setColor(0, shp.Color0);
+00662         vb.setColor(1, shp.Color1);
+00663         vb.setColor(2, shp.Color2);
+00664         vb.setColor(3, shp.Color3);
+00665         vb.setTexCoord (0, 0, shp.Uv0);
+00666         vb.setTexCoord (1, 0, shp.Uv1);
+00667         vb.setTexCoord (2, 0, shp.Uv2);
+00668         vb.setTexCoord (3, 0, shp.Uv3);
+00669         
+00670         _Driver->activeVertexBuffer(vb);
+00671         _Driver->render(pb, convMat(mat));
+00672 }
+00673 // ***************************************************************************
+00674 void                    CDriverUser::drawQuads(const std::vector<NLMISC::CQuadColorUV> &q, UMaterial &mat)
+00675 {
+00676         NL3D_MEM_DRIVER
+00677 
+00678         const CQuadColorUV *qptr = &(q[0]);
+00679         drawQuads(qptr , q.size(), mat);
+00680 }
+00681 
+00682 // ***************************************************************************
+00683 void                    CDriverUser::drawQuads(const NLMISC::CQuadColorUV *quads, uint32 nbQuads, UMaterial &mat)
+00684 {
+00685         NL3D_MEM_DRIVER
+00686         NL3D_HAUTO_DRAW_DRIVER;
+00687 
+00688         CVertexBuffer           &vb = _VBQuadsColUv;
+00689 
+00690         vb.setNumVertices (4*nbQuads);
+00691 
+00692         for (uint32 i = 0; i < nbQuads; ++i)
+00693         {
+00694                 const NLMISC::CQuadColorUV &qcuv = quads[i];
+00695                 vb.setVertexCoord (i*4+0, qcuv.V0);
+00696                 vb.setVertexCoord (i*4+1, qcuv.V1);
+00697                 vb.setVertexCoord (i*4+2, qcuv.V2);
+00698                 vb.setVertexCoord (i*4+3, qcuv.V3);
+00699                 vb.setColor(i*4+0, qcuv.Color0);
+00700                 vb.setColor(i*4+1, qcuv.Color1);
+00701                 vb.setColor(i*4+2, qcuv.Color2);
+00702                 vb.setColor(i*4+3, qcuv.Color3);
+00703                 vb.setTexCoord (i*4+0, 0, qcuv.Uv0);
+00704                 vb.setTexCoord (i*4+1, 0, qcuv.Uv1);
+00705                 vb.setTexCoord (i*4+2, 0, qcuv.Uv2);
+00706                 vb.setTexCoord (i*4+3, 0, qcuv.Uv3);
+00707         }
+00708         
+00709         _Driver->activeVertexBuffer(vb);
+00710         _Driver->renderQuads(convMat(mat), 0, nbQuads);
+00711 }
+00712 
+00713 
+00714 // ***************************************************************************
+00715 // ***************************************************************************
+00716 // 2D TOOLS.
+00717 // ***************************************************************************
+00718 // ***************************************************************************
+00719 
+00720 
+00721 // ***************************************************************************
+00722 void                    CDriverUser::drawBitmap (float x, float y, float width, float height, class UTexture& texture, bool blend, CRGBA col) 
+00723 {
+00724         NL3D_MEM_DRIVER
+00725         NL3D_HAUTO_DRAW_DRIVER;
+00726 
+00727         _MatText.setTexture(&texture);
+00728         _MatText.setColor(col);
+00729         _MatText.setBlend(blend);
+00730 
+00731         CQuadUV         quad;
+00732         quad.V0.set(x,y,0);
+00733         quad.V1.set(x+width,y,0);
+00734         quad.V2.set(x+width,y+height,0);
+00735         quad.V3.set(x,y+height,0);
+00736         quad.Uv0.U= 0.f;
+00737         quad.Uv0.V= 1.f;
+00738         quad.Uv1.U= 1.f;
+00739         quad.Uv1.V= 1.f;
+00740         quad.Uv2.U= 1.f;
+00741         quad.Uv2.V= 0.f;
+00742         quad.Uv3.U= 0.f;
+00743         quad.Uv3.V= 0.f;
+00744 
+00745         drawQuad(quad, _MatText);
+00746 }
+00747 // ***************************************************************************
+00748 void                    CDriverUser::drawLine (float x0, float y0, float x1, float y1, CRGBA col) 
+00749 {
+00750         NL3D_MEM_DRIVER
+00751         NL3D_HAUTO_DRAW_DRIVER;
+00752 
+00753         _MatFlat.setColor(col);
+00754         _MatFlat.setBlend(true);
+00755 
+00756         CLine           line;
+00757         line.V0.set(x0,y0,0);
+00758         line.V1.set(x1,y1,0);
+00759 
+00760         drawLine(line, _MatFlat);
+00761 }
+00762 // ***************************************************************************
+00763 void                    CDriverUser::drawTriangle (float x0, float y0, float x1, float y1, float x2, float y2, CRGBA col) 
+00764 {
+00765         NL3D_MEM_DRIVER
+00766         NL3D_HAUTO_DRAW_DRIVER;
+00767 
+00768         _MatFlat.setColor(col);
+00769         _MatFlat.setBlend(true);
+00770 
+00771         CTriangle               tri;
+00772         tri.V0.set(x0,y0,0);
+00773         tri.V1.set(x1,y1,0);
+00774         tri.V2.set(x2,y2,0);
+00775 
+00776         drawTriangle(tri, _MatFlat);
+00777 }
+00778 // ***************************************************************************
+00779 void                    CDriverUser::drawQuad (float x0, float y0, float x1, float y1, CRGBA col) 
+00780 {
+00781         NL3D_MEM_DRIVER
+00782         NL3D_HAUTO_DRAW_DRIVER;
+00783 
+00784         _MatFlat.setColor(col);
+00785         _MatFlat.setBlend(true);
+00786 
+00787         CQuad           quad;
+00788         quad.V0.set(x0,y0,0);
+00789         quad.V1.set(x1,y0,0);
+00790         quad.V2.set(x1,y1,0);
+00791         quad.V3.set(x0,y1,0);
+00792 
+00793         drawQuad(quad, _MatFlat);
+00794 }
+00795 // ***************************************************************************
+00796 void                    CDriverUser::drawQuad (float xcenter, float ycenter, float radius, CRGBA col) 
+00797 {
+00798         NL3D_MEM_DRIVER
+00799 
+00800         drawQuad(xcenter-radius, ycenter-radius, xcenter+radius, ycenter+radius, col);
+00801 }
+00802 // ***************************************************************************
+00803 void                    CDriverUser::drawWiredQuad (float x0, float y0, float x1, float y1, CRGBA col) 
+00804 {
+00805         NL3D_MEM_DRIVER
+00806 
+00807         // v-left
+00808         drawLine(x0,y0,x0,y1,col);      
+00809         // v-right
+00810         drawLine(x1,y0,x1,y1,col);      
+00811         // h-up
+00812         drawLine(x0,y1,x1,y1,col);      
+00813         // h-bottom
+00814         drawLine(x0,y0,x1,y0,col);      
+00815 }
+00816 // ***************************************************************************
+00817 void                    CDriverUser::drawWiredQuad (float xcenter, float ycenter, float radius, CRGBA col) 
+00818 {
+00819         NL3D_MEM_DRIVER
+00820 
+00821         drawWiredQuad(xcenter-radius, ycenter-radius, xcenter+radius, ycenter+radius, col);
+00822 }
+00823 
+00824 
+00825 // ***************************************************************************
+00826 // ***************************************************************************
+00827 // MISC.
+00828 // ***************************************************************************
+00829 // ***************************************************************************
+00830 
+00831 
+00832 // ***************************************************************************
+00833 UDriver::TMessageBoxId  CDriverUser::systemMessageBox (const char* message, const char* title, TMessageBoxType type, TMessageBoxIcon icon)
+00834 {
+00835         NL3D_MEM_DRIVER
+00836 
+00837         IDriver::TMessageBoxId          dret;
+00838         IDriver::TMessageBoxType        dtype= (IDriver::TMessageBoxType)(uint32)type;
+00839         IDriver::TMessageBoxIcon        dicon= (IDriver::TMessageBoxIcon)(uint32)icon;
+00840         dret= _Driver->systemMessageBox (message, title, dtype, dicon);
+00841 
+00842         return (UDriver::TMessageBoxId)(uint32)dret;
+00843 }
+00844 
+00845 
+00846 // ***************************************************************************
+00847 CMaterial               &CDriverUser::convMat(UMaterial &mat)
+00848 {
+00849         NL3D_MEM_DRIVER
+00850 
+00851         CMaterialUser   *pmat= (CMaterialUser*)&mat;
+00852         return pmat->_Material;
+00853 }
+00854 
+00855 
+00856 // ***************************************************************************
+00857 void                    CDriverUser::clearRGBABuffer(CRGBA col)
+00858 {
+00859         NL3D_MEM_DRIVER
+00860         NL3D_HAUTO_CLEAR_DRIVER;
+00861 
+00862         _Driver->clear2D(col);
+00863 }
+00864 // ***************************************************************************
+00865 void                    CDriverUser::clearZBuffer()
+00866 {
+00867         NL3D_MEM_DRIVER
+00868         NL3D_HAUTO_CLEAR_DRIVER;
+00869 
+00870         _Driver->clearZBuffer();
+00871 }
+00872 // ***************************************************************************
+00873 void                    CDriverUser::clearBuffers(CRGBA col)
+00874 {
+00875         NL3D_MEM_DRIVER
+00876         NL3D_HAUTO_CLEAR_DRIVER;
+00877 
+00878         _Driver->clear2D(col);
+00879         _Driver->clearZBuffer();
+00880 }
+00881 // ***************************************************************************
+00882 void                    CDriverUser::swapBuffers()
+00883 {
+00884         NL3D_MEM_DRIVER
+00885         NL3D_HAUTO_SWAP_DRIVER;
+00886 
+00887         _Driver->swapBuffers();
+00888 }
+00889 
+00890 
+00891 // ***************************************************************************
+00892 bool                    CDriverUser::fogEnabled()
+00893 {
+00894         NL3D_MEM_DRIVER
+00895         NL3D_HAUTO_UI_DRIVER;
+00896 
+00897         return _Driver->fogEnabled();
+00898 }
+00899 // ***************************************************************************
+00900 void                    CDriverUser::enableFog(bool enable)
+00901 {
+00902         NL3D_MEM_DRIVER
+00903         NL3D_HAUTO_UI_DRIVER;
+00904 
+00905         _Driver->enableFog(enable);
+00906 }
+00907 // ***************************************************************************
+00908 void                    CDriverUser::setupFog(float start, float end, CRGBA color)
+00909 {
+00910         NL3D_MEM_DRIVER
+00911         NL3D_HAUTO_UI_DRIVER;
+00912 
+00913         _Driver->setupFog(start, end, color);
+00914 }
+00915 
+00916 
+00917 // ***************************************************************************
+00918 void                    CDriverUser::setLight (uint8 num, const ULight& light)
+00919 {
+00920         NL3D_MEM_DRIVER
+00921         NL3D_HAUTO_UI_DRIVER;
+00922 
+00923         CLightUser      *plight= (CLightUser*)&light;
+00924         _Driver->setLight (num, plight->_Light);
+00925 }
+00926 // ***************************************************************************
+00927 void                    CDriverUser::enableLight (uint8 num, bool enable)
+00928 {
+00929         NL3D_MEM_DRIVER
+00930         NL3D_HAUTO_UI_DRIVER;
+00931 
+00932         _Driver->enableLight (num, enable);
+00933 }
+00934 // ***************************************************************************
+00935 void                    CDriverUser::setAmbientColor (CRGBA color)
+00936 {
+00937         NL3D_MEM_DRIVER
+00938         NL3D_HAUTO_UI_DRIVER;
+00939 
+00940         _Driver->setAmbientColor (color);
+00941 }
+00942 
+00943 
+00944 // ***************************************************************************
+00945 void                    CDriverUser::setPolygonMode (TPolygonMode mode)
+00946 {
+00947         NL3D_MEM_DRIVER
+00948         NL3D_HAUTO_UI_DRIVER;
+00949 
+00950         IDriver::TPolygonMode   dmode=IDriver::Filled;
+00951         switch(mode)
+00952         {
+00953                 case Filled:    dmode= IDriver::Filled; break;
+00954                 case Line:              dmode= IDriver::Line; break;
+00955                 case Point:             dmode= IDriver::Point; break;
+00956                 default: nlstop;
+00957         };
+00958         _Driver->setPolygonMode (dmode);
+00959 }
+00960 U3dMouseListener*       CDriverUser::create3dMouseListener ()
+00961 {
+00962         NL3D_MEM_DRIVER
+00963         NL3D_HAUTO_UI_DRIVER;
+00964 
+00965         // Alloc the listener
+00966         CEvent3dMouseListener *listener=new CEvent3dMouseListener();
+00967 
+00968         // register it
+00969         listener->addToServer (EventServer);
+00970 
+00971         return listener;
+00972 }
+00973 void CDriverUser::delete3dMouseListener (U3dMouseListener *listener)
+00974 {
+00975         NL3D_MEM_DRIVER
+00976         NL3D_HAUTO_UI_DRIVER;
+00977 
+00978         // Unregister
+00979         ((CEvent3dMouseListener*)listener)->removeFromServer (EventServer);
+00980 
+00981         delete (CEvent3dMouseListener*)listener;
+00982 }
+00983 UDriver::TPolygonMode   CDriverUser::getPolygonMode () 
+00984 {
+00985         NL3D_MEM_DRIVER
+00986         NL3D_HAUTO_UI_DRIVER;
+00987 
+00988         IDriver::TPolygonMode   dmode;
+00989         UDriver::TPolygonMode   umode=UDriver::Filled;
+00990         dmode= _Driver->getPolygonMode();
+00991         switch(dmode)
+00992         {
+00993                 case IDriver::Filled:   umode= UDriver::Filled; break;
+00994                 case IDriver::Line:             umode= UDriver::Line; break;
+00995                 case IDriver::Point:    umode= UDriver::Point; break;
+00996                 default: nlstop;
+00997         };
+00998 
+00999         return umode;
+01000 }
+01001 void                    CDriverUser::forceDXTCCompression(bool dxtcComp)
+01002 {
+01003         NL3D_MEM_DRIVER
+01004         NL3D_HAUTO_UI_DRIVER;
+01005 
+01006         _Driver->forceDXTCCompression(dxtcComp);
+01007 }
+01008 void                    CDriverUser::forceTextureResize(uint divisor)
+01009 {
+01010         NL3D_MEM_DRIVER
+01011         NL3D_HAUTO_UI_DRIVER;
+01012 
+01013         _Driver->forceTextureResize(divisor);
+01014 }
+01015 bool                    CDriverUser::setMonitorColorProperties (const CMonitorColorProperties &properties)
+01016 {
+01017         NL3D_MEM_DRIVER
+01018         NL3D_HAUTO_UI_DRIVER;
+01019 
+01020         return _Driver->setMonitorColorProperties (properties);
+01021 }
+01022 
+01023 
+01024 
+01025 // ***************************************************************************
+01026 // ***************************************************************************
+01028 // ***************************************************************************
+01029 // ***************************************************************************
+01030 
+01031 uint32                  CDriverUser::getImplementationVersion () const
+01032 {
+01033         NL3D_MEM_DRIVER
+01034         NL3D_HAUTO_UI_DRIVER;
+01035 
+01036         return _Driver->getImplementationVersion ();
+01037 }
+01038 const char*             CDriverUser::getDriverInformation ()
+01039 {
+01040         NL3D_MEM_DRIVER
+01041         NL3D_HAUTO_UI_DRIVER;
+01042 
+01043         return _Driver->getDriverInformation();
+01044 }
+01045 const char*             CDriverUser::getVideocardInformation ()
+01046 {
+01047         NL3D_MEM_DRIVER
+01048         NL3D_HAUTO_UI_DRIVER;
+01049 
+01050         return _Driver->getVideocardInformation ();
+01051 }
+01052 sint                    CDriverUser::getNbTextureStages()
+01053 {
+01054         NL3D_MEM_DRIVER
+01055         NL3D_HAUTO_UI_DRIVER;
+01056 
+01057         return _Driver->getNbTextureStages();
+01058 }
+01059 void                    CDriverUser::getWindowSize (uint32 &width, uint32 &height)
+01060 {
+01061         NL3D_MEM_DRIVER
+01062         NL3D_HAUTO_UI_DRIVER;
+01063 
+01064         _Driver->getWindowSize (width, height);
+01065 }
+01066 uint                    CDriverUser::getWindowWidth ()
+01067 {
+01068         NL3D_MEM_DRIVER
+01069         NL3D_HAUTO_UI_DRIVER;
+01070 
+01071         uint32 width, height;
+01072         _Driver->getWindowSize (width, height);
+01073         return width;
+01074 }
+01075 uint                    CDriverUser::getWindowHeight ()
+01076 {
+01077         NL3D_MEM_DRIVER
+01078         NL3D_HAUTO_UI_DRIVER;
+01079 
+01080         uint32 width, height;
+01081         _Driver->getWindowSize (width, height);
+01082         return height;
+01083 }
+01084 void                    CDriverUser::getBuffer (CBitmap &bitmap) 
+01085 {
+01086         NL3D_MEM_DRIVER
+01087         NL3D_HAUTO_UI_DRIVER;
+01088 
+01089         _Driver->getBuffer (bitmap) ;
+01090 }
+01091 void                    CDriverUser::getZBuffer (std::vector<float>  &zbuffer) 
+01092 {
+01093         NL3D_MEM_DRIVER
+01094         NL3D_HAUTO_UI_DRIVER;
+01095 
+01096         _Driver->getZBuffer (zbuffer) ;
+01097 }
+01098 void                    CDriverUser::getBufferPart (CBitmap &bitmap, NLMISC::CRect &rect) 
+01099 {
+01100         NL3D_MEM_DRIVER
+01101         NL3D_HAUTO_UI_DRIVER;
+01102 
+01103         _Driver->getBufferPart (bitmap, rect) ;
+01104 }
+01105 void                    CDriverUser::getZBufferPart (std::vector<float>  &zbuffer, NLMISC::CRect &rect) 
+01106 {
+01107         NL3D_MEM_DRIVER
+01108         NL3D_HAUTO_UI_DRIVER;
+01109 
+01110         _Driver->getZBufferPart (zbuffer, rect) ;
+01111 }
+01112 bool                    CDriverUser::fillBuffer (CBitmap &bitmap)
+01113 {
+01114         NL3D_MEM_DRIVER
+01115         NL3D_HAUTO_UI_DRIVER;
+01116 
+01117         return _Driver->fillBuffer(bitmap);
+01118 }
+01119 
+01120 
+01121 // ***************************************************************************
+01122 // ***************************************************************************
+01123 // Mouse / Keyboards / Game devices
+01124 // ***************************************************************************
+01125 // ***************************************************************************
+01126 
+01127 NLMISC::IMouseDevice                    *CDriverUser::enableLowLevelMouse(bool enable)
+01128 {
+01129         NL3D_MEM_DRIVER
+01130         NL3D_HAUTO_UI_DRIVER;
+01131 
+01132         return _Driver->enableLowLevelMouse(enable);
+01133 }
+01134 NLMISC::IKeyboardDevice                 *CDriverUser::enableLowLevelKeyboard(bool enable) 
+01135 {
+01136         NL3D_MEM_DRIVER
+01137         NL3D_HAUTO_UI_DRIVER;
+01138 
+01139         return _Driver->enableLowLevelKeyboard(enable);
+01140 }
+01141 NLMISC::IInputDeviceManager             *CDriverUser::getLowLevelInputDeviceManager()
+01142 {
+01143         NL3D_MEM_DRIVER
+01144         NL3D_HAUTO_UI_DRIVER;
+01145 
+01146         return _Driver->getLowLevelInputDeviceManager();
+01147 }
+01148 void                    CDriverUser::showCursor (bool b)
+01149 {
+01150         NL3D_MEM_DRIVER
+01151         NL3D_HAUTO_UI_DRIVER;
+01152 
+01153         _Driver->showCursor(b);
+01154 }
+01155 void                    CDriverUser::setMousePos (float x, float y)
+01156 {
+01157         NL3D_MEM_DRIVER
+01158         NL3D_HAUTO_UI_DRIVER;
+01159 
+01160         _Driver->setMousePos (x, y);
+01161 }
+01162 void                    CDriverUser::setCapture (bool b)
+01163 {
+01164         NL3D_MEM_DRIVER
+01165         NL3D_HAUTO_UI_DRIVER;
+01166 
+01167         _Driver->setCapture (b);
+01168 }
+01169 
+01170 
+01171 // ***************************************************************************
+01172 // ***************************************************************************
+01173 // Async Texture loading mgt
+01174 // ***************************************************************************
+01175 // ***************************************************************************
+01176 
+01177 
+01178 // ***************************************************************************
+01179 void                            CDriverUser::setupAsyncTextureLod(uint baseLevel, uint maxLevel)
+01180 {
+01181         _AsyncTextureManager.setupLod(baseLevel, maxLevel);
+01182 }
+01183 // ***************************************************************************
+01184 void                            CDriverUser::setupAsyncTextureMaxUploadPerFrame(uint maxup)
+01185 {
+01186         _AsyncTextureManager.setupMaxUploadPerFrame(maxup);
+01187 }
+01188 // ***************************************************************************
+01189 void                            CDriverUser::updateAsyncTexture()
+01190 {
+01191         _AsyncTextureManager.update(getDriver());
+01192 }
+01193 
+01194 
+01195 // ***************************************************************************
+01196 void                            CDriverUser::setupMaxTotalAsyncTextureSize(uint maxText)
+01197 {
+01198         _AsyncTextureManager.setupMaxTotalTextureSize(maxText);
+01199 }
+01200 // ***************************************************************************
+01201 uint                            CDriverUser::getTotalAsyncTextureSizeAsked() const
+01202 {
+01203         return _AsyncTextureManager.getTotalTextureSizeAsked();
+01204 }
+01205 // ***************************************************************************
+01206 uint                            CDriverUser::getLastAsyncTextureSizeGot() const
+01207 {
+01208         return _AsyncTextureManager.getLastTextureSizeGot();
+01209 }
+01210 
+01211 // ***************************************************************************
+01212 void                            CDriverUser::setupMaxHLSColoringPerFrame(uint maxCol)
+01213 {
+01214         _AsyncTextureManager.setupMaxHLSColoringPerFrame(maxCol);
+01215 }
+01216 
+01217 // ***************************************************************************
+01218 void                            CDriverUser::loadHLSBank(const std::string &fileName)
+01219 {
+01220         // load it.
+01221         CHLSTextureBank                 *hlsBank= new CHLSTextureBank;
+01222         try
+01223         {
+01224                 std::string     path= CPath::lookup(fileName);
+01225                 CIFile  fIn;
+01226                 if(!fIn.open(path))
+01227                         throw EPathNotFound(path);
+01228                 fIn.serial(*hlsBank);
+01229         }
+01230         catch(Exception &)
+01231         {
+01232                 delete hlsBank;
+01233                 throw;
+01234         }
+01235 
+01236         // add it to the manager.
+01237         _AsyncTextureManager.HLSManager.addBank(hlsBank);
+01238 }
+01239 
+01240 
+01241 } // NL3D
+
+ + +
                                                                                                                                                                    +
+ + -- cgit v1.2.1