# 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  

NL3D::CDriverGL Class Reference

#include <driver_opengl.h>

Inheritance diagram for NL3D::CDriverGL:

NL3D::IDriver NLMISC::CRefCount List of all members.

EXTVertexShader specifics.

enum  EEVSVariants {
  EVSSecondaryColorVariant = 0, EVSFogCoordsVariant = 1, EVSSkinWeightVariant = 2, EVSPaletteSkinVariant = 3,
  EVSNumVariants
}
bool setupEXTVertexShader (const CVPParser::TProgram &program, GLuint id, uint variants[EVSNumVariants], uint16 &usedInputRegisters)
 Setup a vertex shader from its parsed program. More...

GLuint _EVSPositionHandle
GLuint _EVSNormalHandle
GLuint _EVSColorHandle
GLuint _EVSTexHandle [8]
GLuint _EVSConstantHandle

Per pixel lighting

typedef NLMISC::CSmartPtr<
CTextureCube
TSPTextureCube
typedef std::vector< TSPTextureCubeTTexCubeVect
sint beginPPLMultiPass ()
void setupPPLPass (uint pass)
void endPPLMultiPass ()
sint beginPPLNoSpecMultiPass ()
void setupPPLNoSpecPass (uint pass)
void endPPLNoSpecMultiPass ()
CTextureCubegetSpecularCubeMap (uint exp)
 get (and if necessary, build) a cube map used for specular lighting. The range for exponent is limited, and only the best fit is used. More...

CTextureCubegetDiffuseCubeMap ()
TTexCubeVect _SpecularTextureCubes

Prec settings, for optimisation.

enum  CTexEnvSpecial {
  TexEnvSpecialDisabled = 0, TexEnvSpecialLightMap, TexEnvSpecialSpecularStage0, TexEnvSpecialSpecularStage1,
  TexEnvSpecialSpecularStage1NoText, TexEnvSpecialPPLStage0, TexEnvSpecialPPLStage2, TexEnvSpecialCloudStage0,
  TexEnvSpecialCloudStage1
}
void resetTextureShaders ()
CMaterial_CurrentMaterial
CMaterial::TShader _CurrentMaterialSupportedShader
ITexture_CurrentTexture [IDRV_MAT_MAXTEXTURES]
CTextureDrvInfosGL_CurrentTextureInfoGL [IDRV_MAT_MAXTEXTURES]
CMaterial::CTexEnv _CurrentTexEnv [IDRV_MAT_MAXTEXTURES]
CTexEnvSpecial _CurrentTexEnvSpecial [IDRV_MAT_MAXTEXTURES]
GLenum _CurrentTexAddrMode [IDRV_MAT_MAXTEXTURES]
bool _NVTextureShaderEnabled
bool _StageSupportEMBM [IDRV_MAT_MAXTEXTURES]
CDriverGLStates _DriverGLStates
uint32 _MaterialAllTextureTouchedFlag

[NOHEADER]

void checkForPerPixelLightingSupport ()
bool _SupportPerPixelShader
bool _SupportPerPixelShaderNoSpec
float _PPLExponent
NLMISC::CRGBA _PPLightDiffuseColor
NLMISC::CRGBA _PPLightSpecularColor

Material multipass.

sint beginMultiPass ()
 init multipass for _CurrentMaterial. return number of pass required to render this material. More...

void setupPass (uint pass)
 active the ith pass of this material. More...

void endMultiPass ()
 end multipass for this material. More...

CVertexBufferInfo _LastVB
 LastVB for UV setup. More...


Lightmap.

void computeLightMapInfos (const CMaterial &mat)
sint beginLightMapMultiPass ()
void setupLightMapPass (uint pass)
void endLightMapMultiPass ()
void resetLightMapVertexSetup ()
uint _NLightMaps
 Temp Variables computed in beginLightMapMultiPass(). Reused in setupLightMapPass(). More...

uint _NLightMapPerPass
uint _NLightMapPass
std::vector< uint_LightMapLUT
CMaterial::CTexEnv _LightMapLastStageEnv
bool _LastVertexSetupIsLightMap
sint8 _LightMapUVMap [IDRV_MAT_MAXTEXTURES]

VertexBufferHard

void resetVertexArrayRange ()
void fenceOnCurVBHardIfNeeded (IVertexBufferHardGL *newVBHard)
CPtrSet< IVertexBufferHardGL_VertexBufferHardSet
IVertexArrayRange_CurrentVertexArrayRange
IVertexBufferHardGL_CurrentVertexBufferHard
void * _NVCurrentVARPtr
uint32 _NVCurrentVARSize
bool _SupportVBHard
bool _SlowUnlockVBHard
uint32 _MaxVerticesByVBHard
IVertexArrayRange_AGPVertexArrayRange
IVertexArrayRange_VRAMVertexArrayRange
class CVertexArrayRangeNVidia
class CVertexBufferHardGLNVidia
class CVertexArrayRangeATI
class CVertexBufferHardGLATI

Profiling

uint computeMipMapMemoryUsage (uint w, uint h, GLint glfmt) const
CPrimitiveProfile _PrimitiveProfileIn
CPrimitiveProfile _PrimitiveProfileOut
uint32 _AllocatedTextureMemory
uint32 _NbSetupMaterialCall
uint32 _NbSetupModelMatrixCall
bool _SumTextureMemoryUsed
std::set< CTextureDrvInfosGL * > _TextureUsed

Caustics shaders

NLMISC::CSmartPtr< CTextureCube_CausticCubeMap
void initCausticCubeMap ()

Public Types

enum  { MaxLight = 8 }

Public Methods

uint32 getHwnd ()
 CDriverGL ()
virtual ~CDriverGL ()
virtual bool init ()
virtual ModeList enumModes ()
virtual void disableHardwareVertexProgram ()
virtual void disableHardwareVertexArrayAGP ()
virtual void disableHardwareTextureShader ()
virtual bool setDisplay (void *wnd, const GfxMode &mode) throw (EBadDisplay)
virtual void * getDisplay ()
virtual emptyProc getWindowProc ()
virtual bool activate ()
 Before rendering via a driver in a thread, must activate() (per thread). More...

virtual sint getNbTextureStages () const
 Get the number of texture stage avaliable, for multitexturing (Normal material shaders). Valid only after setDisplay(). More...

virtual bool isTextureExist (const ITexture &tex)
 is the texture is set up in the driver. More...

virtual NLMISC::IEventEmittergetEventEmitter ()
virtual bool clear2D (CRGBA rgba)
virtual bool clearZBuffer (float zval=1)
virtual void setColorMask (bool bRed, bool bGreen, bool bBlue, bool bAlpha)
 Set the color mask filter through where the operation done will pass. More...

virtual bool setupTexture (ITexture &tex)
 setup a texture, generate and upload if needed. More...

virtual bool setupTextureEx (ITexture &tex, bool bUpload, bool &bAllUploaded, bool bMustRecreateSharedTexture=false)
 setup a texture in the driver. More...

virtual bool uploadTexture (ITexture &tex, NLMISC::CRect &rect, uint8 nNumMipMap)
 The texture must be created or uploadTexture do nothing. More...

virtual bool uploadTextureCube (ITexture &tex, NLMISC::CRect &rect, uint8 nNumMipMap, uint8 nNumFace)
virtual void forceDXTCCompression (bool dxtcComp)
 if true force all the uncompressed RGBA 32 bits and RGBA 24 bits texture to be DXTC5 compressed. More...

virtual void forceTextureResize (uint divisor)
 if !=1, force mostly all the textures (but TextureFonts lightmaps, interfaces etc..) to be divided by Divisor (2, 4, 8...) Default is 1. More...

void setTextureEnvFunction (uint stage, CMaterial &mat)
 Setup texture env functions. Used by setupMaterial. More...

void setupUserTextureMatrix (uint numStages, CMaterial &mat)
 setup the texture matrix for a given number of stages (starting from 0). More...

void disableUserTextureMatrix ()
 disable all texture matrix. More...

virtual bool setupMaterial (CMaterial &mat)
 For objects with caustics, setup the first texture (which actually is the one from the material). More...

virtual void setFrustum (float left, float right, float bottom, float top, float znear, float zfar, bool perspective=true)
virtual void setupViewMatrix (const CMatrix &mtx)
 setup the view matrix (inverse of camera matrix). More...

virtual void setupViewMatrixEx (const CMatrix &mtx, const CVector &cameraPos)
 setup the view matrix (inverse of camera matrix). More...

virtual void setupModelMatrix (const CMatrix &mtx)
 setup the model matrix. More...

virtual void multiplyModelMatrix (const CMatrix &mtx)
 multipliy the model matrix. More...

virtual CMatrix getViewMatrix () const
virtual void forceNormalize (bool normalize)
 Force input normal to be normalized by the driver. More...

virtual bool isForceNormalize () const
 return the forceNormalize() state. More...

virtual bool supportVertexBufferHard () const
 return true if driver support VertexBufferHard. More...

virtual bool slowUnlockVertexBufferHard () const
 return true if driver support VertexBufferHard, but vbHard->unlock() are slow (ATI-openGL). More...

virtual uint getMaxVerticesByVertexBufferHard () const
 return How many vertices VertexBufferHard support. More...

virtual bool initVertexArrayRange (uint agpMem, uint vramMem)
 Allocate the initial VertexArray Memory. More...

virtual IVertexBufferHardcreateVertexBufferHard (uint16 vertexFormat, const uint8 *typeArray, uint32 numVertices, IDriver::TVBHardType vbType)
virtual void deleteVertexBufferHard (IVertexBufferHard *VB)
 delete a IVertexBufferHard. More...

virtual void activeVertexBufferHard (IVertexBufferHard *VB)
 active a current VB Hard, for future render(). More...

virtual bool activeVertexBuffer (CVertexBuffer &VB)
 active a current VB, for future render(). More...

virtual bool activeVertexBuffer (CVertexBuffer &VB, uint first, uint end)
 active a current VB, for future render(). More...

virtual void mapTextureStageToUV (uint stage, uint uv)
 Say what Texture Stage use what UV coord. More...

virtual bool render (CPrimitiveBlock &PB, CMaterial &Mat)
 render a block of primitive with previously setuped VertexBuffer / Matrixes. More...

virtual void renderTriangles (CMaterial &Mat, uint32 *tri, uint32 ntris)
 render a list of triangles with previously setuped VertexBuffer / Matrixes. More...

virtual void renderSimpleTriangles (uint32 *tri, uint32 ntris)
 render a list of triangles with previously setuped VertexBuffer / Matrixes, AND previously setuped MATERIAL!! This use the last material setuped. More...

virtual void renderPoints (CMaterial &Mat, uint32 numPoints)
 render points with previously setuped VertexBuffer / Matrixes. More...

virtual void renderQuads (CMaterial &Mat, uint32 startIndex, uint32 numQuads)
 render quads with previously setuped VertexBuffer / Matrixes. More...

virtual bool swapBuffers ()
 Swap the back and front buffers. More...

virtual void profileRenderedPrimitives (CPrimitiveProfile &pIn, CPrimitiveProfile &pOut)
 Special : with vertex program, using the extension EXT_vertex_shader, fog is emulated using 1 more constant to scale result to [0, 1]. More...

virtual uint32 profileAllocatedTextureMemory ()
 Return the amount of Texture memory requested. More...

virtual uint32 profileSetupedMaterials () const
 Get the number of material setuped from the last swapBuffers() call. More...

virtual uint32 profileSetupedModelMatrix () const
 Get the number of matrix setuped from the last swapBuffers() call. More...

void enableUsedTextureMemorySum (bool enable)
 Enable the sum of texture memory used since last swapBuffers() call. More...

uint32 getUsedTextureMemory () const
 Return the amount of texture video memory used since last swapBuffers() call. More...

virtual bool release ()
 Deriver should calls IDriver::release() first, to destroy all driver components (textures, shaders, VBuffers). More...

virtual TMessageBoxId systemMessageBox (const char *message, const char *title, TMessageBoxType type=okType, TMessageBoxIcon icon=noIcon)
 Output a system message box and print a message with an icon. More...

virtual void setupScissor (const class CScissor &scissor)
 Set the current Scissor. More...

virtual void setupViewport (const class CViewport &viewport)
 Set the current viewport. More...

virtual uint32 getImplementationVersion () const
 Get the driver version. More...

virtual const char * getDriverInformation ()
 Get driver informations. More...

virtual const char * getVideocardInformation ()
 Get videocard informations. More...

virtual bool isActive ()
 Return true if driver is still active. Return false else. If he user close the window, must return false. More...

virtual uint8 getBitPerPixel ()
 Return the depth of the driver after init(). More...

virtual void showCursor (bool b)
 show cursor if b is true, or hide it if b is false. More...

virtual void setMousePos (float x, float y)
 x and y must be between 0.0 and 1.0. More...

virtual void setCapture (bool b)
 If true, capture the mouse to force it to stay under the window. More...

virtual NLMISC::IMouseDeviceenableLowLevelMouse (bool enable)
 Enable / disable low level mouse. More...

virtual NLMISC::IKeyboardDeviceenableLowLevelKeyboard (bool enable)
 Enable / disable a low level keyboard. More...

virtual NLMISC::IInputDeviceManagergetLowLevelInputDeviceManager ()
 Check wether there is a low level device manager available, and get its interface. More...

virtual void getWindowSize (uint32 &width, uint32 &height)
 Get the width and the height of the window. More...

virtual void getBuffer (CBitmap &bitmap)
 get the RGBA back buffer. More...

virtual void getZBuffer (std::vector< float > &zbuffer)
 get the ZBuffer (back buffer). More...

virtual void getBufferPart (CBitmap &bitmap, NLMISC::CRect &rect)
 get a part of the RGBA back buffer NB: 0,0 is the bottom left corner of the screen. More...

virtual void getZBufferPart (std::vector< float > &zbuffer, NLMISC::CRect &rect)
 get a part of the ZBuffer (back buffer). More...

virtual void copyFrameBufferToTexture (ITexture *tex, uint32 level, uint32 offsetx, uint32 offsety, uint32 x, uint32 y, uint32 width, uint32 height)
 Copy a portion of the FrameBuffer into a texture. More...

virtual bool fillBuffer (CBitmap &bitmap)
 fill the RGBA back buffer. More...

virtual void setPolygonMode (TPolygonMode mode)
 Set the global polygon mode. More...

virtual uint getMaxLight () const
 return the number of light supported by driver. More...

virtual void setLight (uint8 num, const CLight &light)
 Setup a light. More...

virtual void enableLight (uint8 num, bool enable=true)
 Enable / disable light. More...

virtual void setPerPixelLightingLight (CRGBA diffuse, CRGBA specular, float shininess)
 Setup the light used for per pixel lighting. More...

virtual void setAmbientColor (CRGBA color)
 Set ambiant. More...

virtual bool supportPerPixelLighting (bool specular) const
virtual void swapTextureHandle (ITexture &tex0, ITexture &tex1)
 Special method to internally swap the Driver handle of 2 textures. More...

Fog support.
virtual bool fogEnabled ()
virtual void enableFog (bool enable)
virtual void setupFog (float start, float end, CRGBA color)
 setup fog parameters. fog must enabled to see result. start and end are in [0,1] range. More...

texture addressing modes
virtual bool supportTextureShaders () const
 test wether the device supports some form of texture shader. (could be limited to DX6 EMBM for example). More...

virtual bool isTextureAddrModeSupported (CMaterial::TTexAddressingMode mode) const
 test wether a texture addressing mode is supported. More...

virtual void setMatrix2DForTextureOffsetAddrMode (const uint stage, const float mat[4])
 setup the 2D matrix for the OffsetTexture, OffsetTextureScale and OffsetTexture addressing mode It should be stored as the following [a0 a1] [a2 a3]. More...

EMBM support
virtual bool supportEMBM () const
virtual bool isEMBMSupportedAtStage (uint stage) const
virtual void setEMBMMatrix (const uint stage, const float mat[4])
Misc
virtual bool supportBlendConstantColor () const
 Does the driver support Blend Constant Color ??? If yes CMaterial::blendConstant* enum can be used for blend Src ord Dst factor. More...

virtual void setBlendConstantColor (NLMISC::CRGBA col)
 see supportBlendConstantColor(). More...

virtual NLMISC::CRGBA getBlendConstantColor () const
 see supportBlendConstantColor(). More...

virtual bool setMonitorColorProperties (const CMonitorColorProperties &properties)
 Setup monitor color properties. More...


Private Types


Private Methods

void refreshProjMatrixFromGL ()
bool setupVertexBuffer (CVertexBuffer &VB)
bool activateTexture (uint stage, ITexture *tex)
void activateTexEnvMode (uint stage, const CMaterial::CTexEnv &env)
void activateTexEnvColor (uint stage, const CMaterial::CTexEnv &env)
void forceActivateTexEnvMode (uint stage, const CMaterial::CTexEnv &env)
void activateTexEnvColor (uint stage, NLMISC::CRGBA col)
void forceActivateTexEnvColor (uint stage, NLMISC::CRGBA col)
void forceActivateTexEnvColor (uint stage, const CMaterial::CTexEnv &env)
void enableNVTextureShader (bool enabled)
 nv texture shaders. Should be used only if this caps is present! More...

void verifyNVTextureShaderConfig ()
void cleanLightSetup ()
GLint getGlTextureFormat (ITexture &tex, bool &compressed)
bool clipRect (NLMISC::CRect &rect)
void setupUVPtr (uint stage, CVertexBufferInfo &VB, uint uvId)
 setup a texture stage with an UV from VB. More...

sint beginCloudMultiPass ()
void setupCloudPass (uint pass)
void endCloudMultiPass ()
void setupGlArrays (CVertexBufferInfo &vb)
 setup GL arrays, with a vb info. More...

void setupGlArraysStd (CVertexBufferInfo &vb)
 Tools fct used by setupGLArrays. More...

void setupGlArraysForNVVertexProgram (CVertexBufferInfo &vb)
void setupGlArraysForEXTVertexShader (CVertexBufferInfo &vb)
void toggleGlArraysForNVVertexProgram ()
void toggleGlArraysForEXTVertexShader ()
void enableGlNormalize (bool normalize)
 Test/activate normalisation of normal. More...

void refreshRenderSetup ()
void doRefreshRenderSetup ()
bool isVertexProgramEnabled () const
sint inlGetNumTextStages () const
 Same as getNbTextureStages(), but faster because inline, and not virtual!! More...

void initEMBM ()
Specular.
sint beginSpecularMultiPass ()
void setupSpecularPass (uint pass)
void endSpecularMultiPass ()
Vertex program interface
bool isVertexProgramSupported () const
 Does the driver supports vertex programs ? More...

bool isVertexProgramEmulated () const
 Does the driver supports vertex program, but emulated by CPU ? More...

bool activeVertexProgram (CVertexProgram *program)
 Activate / disactivate a vertex program. More...

void setConstant (uint index, float, float, float, float)
 Setup constant values. More...

void setConstant (uint index, double, double, double, double)
void setConstant (uint indexStart, const NLMISC::CVector &value)
void setConstant (uint indexStart, const NLMISC::CVectorD &value)
void setConstant (uint index, uint num, const float *src)
 setup several 4 float csts taken from the given tab. More...

void setConstant (uint index, uint num, const double *src)
 setup several 4 double csts taken from the given tab. More...

void setConstantMatrix (uint index, IDriver::TMatrix matrix, IDriver::TTransform transform)
void enableVertexProgramDoubleSidedColor (bool doubleSided)
 Activate VertexProgram 2Sided Color mode. More...

bool supportVertexProgramDoubleSidedColor () const
 Check if the driver support double sided colors vertex programs. More...

Vertex program implementation
bool activeNVVertexProgram (CVertexProgram *program)
bool activeEXTVertexShader (CVertexProgram *program)
 Don't know why, but on some implementation of EXT_vertex_shader, can't write a single components to the fog coordinate.. More...

CMaterial::TShader getSupportedShader (CMaterial::TShader shader)
 test wether the given shader is supported, and gives back a supported shader. More...


Private Attributes

bool _FullScreen
bool _OffScreen
bool _Initialized
uint8 _Depth
bool _ForceNormalize
bool _LightSetupDirty
bool _ModelViewMatrixDirty
bool _ProjMatDirty
NLMISC::CMatrix _GLProjMat
bool _RenderSetupDirty
float _OODeltaZ
CMatrix _UserViewMtx
CMatrix _ViewMtx
CMatrix _TexMtx
CVector _PZBCameraPos
CMatrix _ModelViewMatrix
bool _FogEnabled
GLfloat _CurrentFogColor [4]
uint _MaxDriverLight
bool _LightEnable [MaxLight]
uint _LightMode [MaxLight]
CVector _WorldLightPos [MaxLight]
CVector _WorldLightDirection [MaxLight]
bool _CurrentGlNormalize
bool _VertexProgramEnabled
bool _LastSetupGLArrayVertexProgram
NLMISC::CRefPtr< CVertexProgram_LastSetuppedVP
bool _ForceDXTCCompression
uint _ForceTextureResizePower
 Divisor for textureResize (power). More...

NLMISC::CMatrix _UserTexMat [IDRV_MAT_MAXTEXTURES]
uint _UserTexMatEnabled
NLMISC::CRGBA _CurrentBlendConstantColor
Driver Caps.
CGlExtensions _Extensions

Static Private Attributes

const uint32 ReleaseVersion = 0x8
const uint NumCoordinatesType [CVertexBuffer::NumType]
const uint GLType [CVertexBuffer::NumType]
const uint GLVertexAttribIndex [CVertexBuffer::NumValue]
const uint GLMatrix [IDriver::NumMatrix]
const uint GLTransform [IDriver::NumTransform]

Friends

class CTextureDrvInfosGL
class CVertexProgamDrvInfosGL

Member Typedef Documentation

typedef NLMISC::CSmartPtr<CTextureCube> NL3D::CDriverGL::TSPTextureCube [private]
 

Definition at line 727 of file driver_opengl.h.

typedef std::vector<TSPTextureCube> NL3D::CDriverGL::TTexCubeVect [private]
 

Definition at line 728 of file driver_opengl.h.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
MaxLight 

Definition at line 197 of file driver_opengl.h.

enum NL3D::CDriverGL::CTexEnvSpecial [private]
 

Enumeration values:
TexEnvSpecialDisabled 
TexEnvSpecialLightMap 
TexEnvSpecialSpecularStage0 
TexEnvSpecialSpecularStage1 
TexEnvSpecialSpecularStage1NoText 
TexEnvSpecialPPLStage0 
TexEnvSpecialPPLStage2 
TexEnvSpecialCloudStage0 
TexEnvSpecialCloudStage1 

Definition at line 577 of file driver_opengl.h.

Referenced by setupSpecularPass.

enum NL3D::CDriverGL::EEVSVariants
 

Enumeration values:
EVSSecondaryColorVariant 
EVSFogCoordsVariant 
EVSSkinWeightVariant 
EVSPaletteSkinVariant 
EVSNumVariants 

Definition at line 922 of file driver_opengl.h.


Constructor & Destructor Documentation

NL3D::CDriverGL::CDriverGL  
 

Definition at line 172 of file driver_opengl.cpp.

References _AGPVertexArrayRange, _AllocatedTextureMemory, _CurrentFogColor, _CurrentGlNormalize, _CurrentMaterial, _CurrentTexAddrMode, _CurrentVertexArrayRange, _CurrentVertexBufferHard, _FogEnabled, _ForceDXTCCompression, _ForceNormalize, _ForceTextureResizePower, _FullScreen, _Initialized, _LastVertexSetupIsLightMap, _LightMapLastStageEnv, _LightMapLUT, _LightMapUVMap, _LightSetupDirty, _MaterialAllTextureTouchedFlag, _MaxVerticesByVBHard, _ModelViewMatrixDirty, _NVCurrentVARPtr, _NVCurrentVARSize, _NVTextureShaderEnabled, _OffScreen, _ProjMatDirty, _RenderSetupDirty, _SlowUnlockVBHard, _StageSupportEMBM, _SumTextureMemoryUsed, _SupportVBHard, _UserTexMatEnabled, _VRAMVertexArrayRange, NL3D::IDRV_MAT_MAXTEXTURES, NL3D::IDRV_TOUCHED_TEX, and NL3D_DRV_MAX_LIGHTMAP.

NL3D::CDriverGL::~CDriverGL   [virtual]
 

Definition at line 266 of file driver_opengl.cpp.

References release.


Member Function Documentation

bool NL3D::CDriverGL::activate   [virtual]
 

Before rendering via a driver in a thread, must activate() (per thread).

Implements NL3D::IDriver.

Definition at line 1259 of file driver_opengl.cpp.

void NL3D::CDriverGL::activateTexEnvColor uint    stage,
NLMISC::CRGBA    col
[private]
 

Definition at line 1080 of file driver_opengl_texture.cpp.

References _CurrentTexEnv, and forceActivateTexEnvColor.

void NL3D::CDriverGL::activateTexEnvColor uint    stage,
const CMaterial::CTexEnv   env
[private]
 

Definition at line 1102 of file driver_opengl_texture.cpp.

References _CurrentTexEnv, and forceActivateTexEnvColor.

Referenced by setTextureEnvFunction, setupCloudPass, setupLightMapPass, setupPPLNoSpecPass, and setupPPLPass.

void NL3D::CDriverGL::activateTexEnvMode uint    stage,
const CMaterial::CTexEnv   env
[private]
 

Definition at line 1090 of file driver_opengl_texture.cpp.

References _CurrentTexEnv, _CurrentTexEnvSpecial, forceActivateTexEnvMode, and TexEnvSpecialDisabled.

Referenced by setTextureEnvFunction, setupLightMapPass, setupPPLNoSpecPass, setupPPLPass, and setupSpecularPass.

bool NL3D::CDriverGL::activateTexture uint    stage,
ITexture   tex
[private]
 

Definition at line 884 of file driver_opengl_texture.cpp.

References _CurrentTexture, _CurrentTextureInfoGL, _DriverGLStates, _Extensions, _TextureUsed, CTextureDrvInfosGL, NL3D::getTextureGl, NL3D::translateMagFilterToGl, NL3D::translateMinFilterToGl, and NL3D::translateWrapToGl.

Referenced by setupCloudPass, setupLightMapPass, setupMaterial, setupPPLNoSpecPass, setupPPLPass, setupTextureEx, and swapTextureHandle.

bool NL3D::CDriverGL::activeEXTVertexShader CVertexProgram   program [private]
 

Don't know why, but on some implementation of EXT_vertex_shader, can't write a single components to the fog coordinate..

So we force the mask to 0xf (only the x coordinate is used anyway).

Definition at line 1095 of file driver_opengl_vertex_program.cpp.

References _LastSetuppedVP, _VertexProgramEnabled, NL3D::IDriver::_VtxPrgDrvInfos, CVertexProgamDrvInfosGL, GL_VERTEX_SHADER_EXT, NL3D::ItVtxPrgDrvInfoPtrList, NL3D::IDriver::IVertexProgramDrvInfos, nglBindVertexShaderEXT, nlerror, nlwarning, CVPParser::parse, program, setupEXTVertexShader, and CVPParser::TProgram.

Referenced by activeVertexProgram.

bool NL3D::CDriverGL::activeNVVertexProgram CVertexProgram   program [private]
 

Definition at line 78 of file driver_opengl_vertex_program.cpp.

References _LastSetuppedVP, _VertexProgramEnabled, NL3D::IDriver::_VtxPrgDrvInfos, CVertexProgamDrvInfosGL, GL_PROGRAM_ERROR_POSITION_NV, GL_VERTEX_PROGRAM_NV, NL3D::ItVtxPrgDrvInfoPtrList, NL3D::IDriver::IVertexProgramDrvInfos, nglBindProgramNV, nglLoadProgramNV, nlassert, nlinfo, nlwarning, offset, CVPParser::parse, program, and CVPParser::TProgram.

Referenced by activeVertexProgram.

bool NL3D::CDriverGL::activeVertexBuffer CVertexBuffer   VB,
uint    first,
uint    end
[virtual]
 

active a current VB, for future render().

This method suppose that only vertices in given range will be used in future render(). This could be usefull for DX or OpenGL driver. Undefined results if primitives in render() use vertices not in this range.

NB: please make sure you have setuped / unsetuped the current vertex program BEFORE activate the vertex buffer.

Parameters:
VB  the vertexBuffer to activate.
first  the first vertex important for render (begin to 0). nlassert(first<=end);
end  the last vertex important for render, +1. count==end-first. nlassert(end<=VB.getNumVertices);
See also:
activeVertexProgram

Implements NL3D::IDriver.

Definition at line 87 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _LastVB, fenceOnCurVBHardIfNeeded, nlassert, setupGlArrays, and setupVertexBuffer.

bool NL3D::CDriverGL::activeVertexBuffer CVertexBuffer   VB [virtual]
 

active a current VB, for future render().

This method suppose that all vertices in the VB will be used.

NB: please make sure you have setuped / unsetuped the current vertex program BEFORE activate the vertex buffer.

See also:
activeVertexProgram

Implements NL3D::IDriver.

Definition at line 128 of file driver_opengl_vertex.cpp.

Referenced by swapBuffers.

void NL3D::CDriverGL::activeVertexBufferHard IVertexBufferHard   VB [virtual]
 

active a current VB Hard, for future render().

NB: please make sure you have setuped / unsetuped the current vertex program BEFORE activate the vertex buffer.

See also:
activeVertexProgram

Implements NL3D::IDriver.

Definition at line 463 of file driver_opengl_vertex.cpp.

References _LastVB, fenceOnCurVBHardIfNeeded, nlassert, and setupGlArrays.

bool NL3D::CDriverGL::activeVertexProgram CVertexProgram   program [private, virtual]
 

Activate / disactivate a vertex program.

Parameters:
program  is a pointer on a vertex program. Can be NULL to disable the current vertex program.
Returns:
true if setup/unsetup successed, false else.

Implements NL3D::IDriver.

Definition at line 1167 of file driver_opengl_vertex_program.cpp.

References _Extensions, activeEXTVertexShader, activeNVVertexProgram, and program.

sint NL3D::CDriverGL::beginCloudMultiPass   [private]
 

Todo:
Optimize the cloud multipass with register combiner

Definition at line 1634 of file driver_opengl_material.cpp.

References _CurrentMaterial, and nlassert.

Referenced by beginMultiPass.

sint NL3D::CDriverGL::beginLightMapMultiPass   [private]
 

Definition at line 604 of file driver_opengl_material.cpp.

References _CurrentMaterial, _DriverGLStates, _LastVB, _NLightMapPass, and computeLightMapInfos.

Referenced by beginMultiPass.

sint NL3D::CDriverGL::beginMultiPass   [private]
 

init multipass for _CurrentMaterial. return number of pass required to render this material.

Definition at line 488 of file driver_opengl_material.cpp.

References beginCloudMultiPass, beginLightMapMultiPass, beginPPLMultiPass, beginPPLNoSpecMultiPass, and beginSpecularMultiPass.

Referenced by render, renderPoints, renderQuads, and renderTriangles.

sint NL3D::CDriverGL::beginPPLMultiPass   [private]
 

Definition at line 1275 of file driver_opengl_material.cpp.

References nlassert, and supportPerPixelLighting.

Referenced by beginMultiPass.

sint NL3D::CDriverGL::beginPPLNoSpecMultiPass   [private]
 

Definition at line 1460 of file driver_opengl_material.cpp.

References nlassert, and supportPerPixelLighting.

Referenced by beginMultiPass.

sint NL3D::CDriverGL::beginSpecularMultiPass   [private]
 

Definition at line 901 of file driver_opengl_material.cpp.

References _CurrentMaterial, _DriverGLStates, _Extensions, and _TexMtx.

Referenced by beginMultiPass.

void NL3D::CDriverGL::checkForPerPixelLightingSupport   [private]
 

Definition at line 2116 of file driver_opengl.cpp.

References _Extensions, _SupportPerPixelShader, and _SupportPerPixelShaderNoSpec.

void NL3D::CDriverGL::cleanLightSetup   [private]
 

Definition at line 168 of file driver_opengl_light.cpp.

References _LightEnable, _LightMode, _LightSetupDirty, _MaxDriverLight, _PZBCameraPos, _ViewMtx, _WorldLightDirection, _WorldLightPos, and nlassert.

Referenced by doRefreshRenderSetup.

bool NL3D::CDriverGL::clear2D CRGBA    rgba [virtual]
 

Implements NL3D::IDriver.

Definition at line 1297 of file driver_opengl.cpp.

bool NL3D::CDriverGL::clearZBuffer float    zval = 1 [virtual]
 

Implements NL3D::IDriver.

Definition at line 1306 of file driver_opengl.cpp.

References _DriverGLStates.

bool NL3D::CDriverGL::clipRect NLMISC::CRect   rect [private]
 

Definition at line 1832 of file driver_opengl.cpp.

References NLMISC::CRect::bottom, NLMISC::clamp, getWindowSize, NLMISC::CRect::Height, height, NLMISC::CRect::right, NLMISC::CRect::Width, width, NLMISC::CRect::X, and NLMISC::CRect::Y.

Referenced by getBufferPart, and getZBufferPart.

void NL3D::CDriverGL::computeLightMapInfos const CMaterial   mat [private]
 

Definition at line 570 of file driver_opengl_material.cpp.

References _Extensions, _LightMapLUT, _NLightMapPass, _NLightMapPerPass, _NLightMaps, inlGetNumTextStages, NL3D_DRV_MAX_LIGHTMAP, and nlassert.

Referenced by beginLightMapMultiPass.

uint NL3D::CDriverGL::computeMipMapMemoryUsage uint    w,
uint    h,
GLint    glfmt
const [private]
 

Definition at line 200 of file driver_opengl_texture.cpp.

References GL_DSDT_NV, GL_DU8DV8_ATI, nlstop, and w.

Referenced by setupTextureEx.

void NL3D::CDriverGL::copyFrameBufferToTexture ITexture   tex,
uint32    level,
uint32    offsetx,
uint32    offsety,
uint32    x,
uint32    y,
uint32    width,
uint32    height
[virtual]
 

Copy a portion of the FrameBuffer into a texture.

The texture must have been right sized before the call. This mark the texture as valid, but doesn't copy data to system memory. This also mean that regenerating texture datas will erase what has been copied before in the device memory. This doesn't work with compressed textures. Ideally, the FrameBuffer should have the same format than the texture.

Parameters:
tex  the texture to copy to.
level  the mipmap to copy texture to.
xoffset  x position within the destination texture
yoffset  y position within the destination texture
x  x position widthin the framebuffer
y  y position widthin the framebuffer
width  width of the area to be copied.
height  height of the area to be copied.

Implements NL3D::IDriver.

Definition at line 1907 of file driver_opengl.cpp.

References _CurrentTexture, _CurrentTextureInfoGL, _DriverGLStates, CTextureDrvInfosGL, getGlTextureFormat, height, NL3D::IDriver::ITextureDrvInfos, level, nlassert, setupTexture, width, x, and y.

IVertexBufferHard * NL3D::CDriverGL::createVertexBufferHard uint16    vertexFormat,
const uint8   typeArray,
uint32    numVertices,
IDriver::TVBHardType    vbType
[virtual]
 

Definition at line 399 of file driver_opengl_vertex.cpp.

References _AGPVertexArrayRange, _MaxVerticesByVBHard, _VertexBufferHardSet, and _VRAMVertexArrayRange.

void NL3D::CDriverGL::deleteVertexBufferHard IVertexBufferHard   VB [virtual]
 

delete a IVertexBufferHard.

NB: VertexBufferHard are automatically deleted at IDriver::release();

Implements NL3D::IDriver.

Definition at line 441 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, and _VertexBufferHardSet.

void NL3D::CDriverGL::disableHardwareTextureShader   [virtual]
 

Implements NL3D::IDriver.

Definition at line 351 of file driver_opengl.cpp.

References _Extensions.

void NL3D::CDriverGL::disableHardwareVertexArrayAGP   [virtual]
 

Implements NL3D::IDriver.

Definition at line 346 of file driver_opengl.cpp.

References _Extensions.

void NL3D::CDriverGL::disableHardwareVertexProgram   [virtual]
 

Implements NL3D::IDriver.

Definition at line 341 of file driver_opengl.cpp.

References _Extensions.

void NL3D::CDriverGL::disableUserTextureMatrix  
 

disable all texture matrix.

Definition at line 185 of file driver_opengl_material.cpp.

References _DriverGLStates, and _UserTexMatEnabled.

Referenced by setupMaterial.

void NL3D::CDriverGL::doRefreshRenderSetup   [private]
 

Definition at line 150 of file driver_opengl_matrix.cpp.

References _ForceNormalize, _LightSetupDirty, _ModelViewMatrix, _ModelViewMatrixDirty, _RenderSetupDirty, cleanLightSetup, enableGlNormalize, and nlassert.

Referenced by refreshRenderSetup.

void NL3D::CDriverGL::enableFog bool    enable [virtual]
 

Implements NL3D::IDriver.

Definition at line 1961 of file driver_opengl.cpp.

References _FogEnabled.

void NL3D::CDriverGL::enableGlNormalize bool    normalize [inline, private]
 

Test/activate normalisation of normal.

Definition at line 767 of file driver_opengl.h.

References _CurrentGlNormalize.

Referenced by doRefreshRenderSetup, and forceNormalize.

void NL3D::CDriverGL::enableLight uint8    num,
bool    enable = true
[virtual]
 

Enable / disable light.

You must call setLight() if you active the ligth.

Parameters:
num  is the number of the light to enable / disable.
enable  is true to enable the light, false to disable it.
See also:
setLight()

Implements NL3D::IDriver.

Definition at line 132 of file driver_opengl_light.cpp.

References _LightEnable, _MaxDriverLight, and num.

NLMISC::IKeyboardDevice * NL3D::CDriverGL::enableLowLevelKeyboard bool    enable [virtual]
 

Enable / disable a low level keyboard.

Such a keyboard can only send KeyDown and KeyUp event. It just consider the keyboard as a gamepad with lots of buttons... This returns a interface to some parameters when it is supported, or NULL otherwise. The interface pointer is valid as long as the low level keyboard is enabled. A call to disable the keyboard returns NULL, and restore the default keyboard behaviour

Implements NL3D::IDriver.

Definition at line 2176 of file driver_opengl.cpp.

NLMISC::IMouseDevice * NL3D::CDriverGL::enableLowLevelMouse bool    enable [virtual]
 

Enable / disable low level mouse.

This allow to take advantage of some options (speed of the mouse, automatic wrapping) It returns a interface to these parameters when it is supported, or NULL otherwise The interface pointer is valid as long as the low level mouse is enabled. A call to disable the mouse returns NULL, and restore the default mouse behaviour NB : - In this mode the mouse cursor isn't drawn.

  • Calls to showCursor have no effects
    • Calls to setCapture have no effects

Implements NL3D::IDriver.

Definition at line 2148 of file driver_opengl.cpp.

void NL3D::CDriverGL::enableNVTextureShader bool    enabled [private]
 

nv texture shaders. Should be used only if this caps is present!

Definition at line 2098 of file driver_opengl.cpp.

References _NVTextureShaderEnabled, and GL_TEXTURE_SHADER_NV.

Referenced by setupMaterial.

void NL3D::CDriverGL::enableUsedTextureMemorySum bool    enable [virtual]
 

Enable the sum of texture memory used since last swapBuffers() call.

To retrieve the memory used call getUsedTextureMemory().

Implements NL3D::IDriver.

Definition at line 2031 of file driver_opengl.cpp.

References _SumTextureMemoryUsed, and nlinfo.

void NL3D::CDriverGL::enableVertexProgramDoubleSidedColor bool    doubleSided [private, virtual]
 

Activate VertexProgram 2Sided Color mode.

In 2Sided mode, the BackFace (if material 2Sided enabled) read the result from o[BFC0], and not o[COL0]. default is false. you should reset to false after use. NB: no-op if not supporte by driver

Implements NL3D::IDriver.

Definition at line 1374 of file driver_opengl_vertex_program.cpp.

References _Extensions, and GL_VERTEX_PROGRAM_TWO_SIDE_NV.

void NL3D::CDriverGL::endCloudMultiPass   [private]
 

Definition at line 1756 of file driver_opengl_material.cpp.

References _CurrentMaterial, and nlassert.

Referenced by endMultiPass.

void NL3D::CDriverGL::endLightMapMultiPass   [private]
 

Definition at line 862 of file driver_opengl_material.cpp.

References _CurrentFogColor, _FogEnabled, _LastVertexSetupIsLightMap, and _NLightMapPass.

Referenced by endMultiPass.

void NL3D::CDriverGL::endMultiPass   [private]
 

end multipass for this material.

Definition at line 541 of file driver_opengl_material.cpp.

References endCloudMultiPass, endLightMapMultiPass, endPPLMultiPass, endPPLNoSpecMultiPass, and endSpecularMultiPass.

Referenced by render, renderPoints, renderQuads, and renderTriangles.

void NL3D::CDriverGL::endPPLMultiPass   [private]
 

Definition at line 1453 of file driver_opengl_material.cpp.

Referenced by endMultiPass.

void NL3D::CDriverGL::endPPLNoSpecMultiPass   [private]
 

Definition at line 1546 of file driver_opengl_material.cpp.

Referenced by endMultiPass.

void NL3D::CDriverGL::endSpecularMultiPass   [private]
 

Definition at line 1147 of file driver_opengl_material.cpp.

References _DriverGLStates.

Referenced by endMultiPass.

ModeList NL3D::CDriverGL::enumModes   [virtual]
 

Implements NL3D::IDriver.

Definition at line 317 of file driver_opengl.cpp.

References NL3D::ModeList.

void NL3D::CDriverGL::fenceOnCurVBHardIfNeeded IVertexBufferHardGL   newVBHard [private]
 

Definition at line 1139 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, and CVertexBufferHardGLNVidia.

Referenced by activeVertexBuffer, and activeVertexBufferHard.

bool NL3D::CDriverGL::fillBuffer CBitmap &    bitmap [virtual]
 

fill the RGBA back buffer.

Parameters:
bitmap  will be written in the buffer. no-op if bad size.
Returns:
true if success

Implements NL3D::IDriver.

Definition at line 1893 of file driver_opengl.cpp.

References getWindowSize.

bool NL3D::CDriverGL::fogEnabled   [virtual]
 

Implements NL3D::IDriver.

Definition at line 1956 of file driver_opengl.cpp.

References _FogEnabled.

void NL3D::CDriverGL::forceActivateTexEnvColor uint    stage,
const CMaterial::CTexEnv   env
[inline, private]
 

Definition at line 641 of file driver_opengl.h.

References forceActivateTexEnvColor.

void NL3D::CDriverGL::forceActivateTexEnvColor uint    stage,
NLMISC::CRGBA    col
[inline, private]
 

Definition at line 628 of file driver_opengl.h.

References _CurrentTexEnv, _DriverGLStates, NLMISC::CRGBA::A, NLMISC::CRGBA::B, NLMISC::CRGBA::G, and NLMISC::CRGBA::R.

Referenced by activateTexEnvColor, forceActivateTexEnvColor, and swapBuffers.

void NL3D::CDriverGL::forceActivateTexEnvMode uint    stage,
const CMaterial::CTexEnv   env
[private]
 

Definition at line 997 of file driver_opengl_texture.cpp.

References _CurrentTexEnv, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, GL_BUMP_ENVMAP_ATI, and TexEnvSpecialDisabled.

Referenced by activateTexEnvMode, and swapBuffers.

void NL3D::CDriverGL::forceDXTCCompression bool    dxtcComp [virtual]
 

if true force all the uncompressed RGBA 32 bits and RGBA 24 bits texture to be DXTC5 compressed.

Do this only during upload if ITexture::allowDegradation() is true and if ITexture::UploadFormat is "Automatic" and if bitmap format is RGBA.

Implements NL3D::IDriver.

Definition at line 1112 of file driver_opengl_texture.cpp.

References _ForceDXTCCompression.

virtual void NL3D::CDriverGL::forceNormalize bool    normalize [inline, virtual]
 

Force input normal to be normalized by the driver.

default is false. NB: driver force the normalisation himself if:

  • current Model matrix has a scale.

Implements NL3D::IDriver.

Definition at line 285 of file driver_opengl.h.

References _ForceNormalize, and enableGlNormalize.

void NL3D::CDriverGL::forceTextureResize uint    divisor [virtual]
 

if !=1, force mostly all the textures (but TextureFonts lightmaps, interfaces etc..) to be divided by Divisor (2, 4, 8...) Default is 1.

NB: this is done only on TextureFile

Implements NL3D::IDriver.

Definition at line 1118 of file driver_opengl_texture.cpp.

References _ForceTextureResizePower, NLMISC::clamp, and NLMISC::getPowerOf2.

uint8 NL3D::CDriverGL::getBitPerPixel   [virtual]
 

Return the depth of the driver after init().

Implements NL3D::IDriver.

Definition at line 1775 of file driver_opengl.cpp.

References _Depth.

NLMISC::CRGBA NL3D::CDriverGL::getBlendConstantColor   const [virtual]
 

see supportBlendConstantColor().

Get the current Blend Constant Color.

Implements NL3D::IDriver.

Definition at line 2233 of file driver_opengl.cpp.

References _CurrentBlendConstantColor.

void NL3D::CDriverGL::getBuffer CBitmap &    bitmap [virtual]
 

get the RGBA back buffer.

Parameters:
bitmap  the buffer will be written in this bitmap

Implements NL3D::IDriver.

Definition at line 1886 of file driver_opengl.cpp.

References getBufferPart, and getWindowSize.

void NL3D::CDriverGL::getBufferPart CBitmap &    bitmap,
NLMISC::CRect   rect
[virtual]
 

get a part of the RGBA back buffer NB: 0,0 is the bottom left corner of the screen.

Parameters:
bitmap  the buffer will be written in this bitmap
rect  the in/out (wanted/clipped) part of Color buffer to retrieve.

Implements NL3D::IDriver.

Definition at line 1852 of file driver_opengl.cpp.

References clipRect, NLMISC::CRect::Height, NLMISC::CRect::Width, NLMISC::CRect::X, and NLMISC::CRect::Y.

Referenced by getBuffer.

CTextureCube* NL3D::CDriverGL::getDiffuseCubeMap   [inline, private]
 

Definition at line 736 of file driver_opengl.h.

References getSpecularCubeMap.

virtual void* NL3D::CDriverGL::getDisplay   [inline, virtual]
 

Implements NL3D::IDriver.

Definition at line 222 of file driver_opengl.h.

virtual const char* NL3D::CDriverGL::getDriverInformation   [inline, virtual]
 

Get driver informations.

get the nel name of the driver (ex: "Opengl 1.2 NeL Driver")

Implements NL3D::IDriver.

Definition at line 358 of file driver_opengl.h.

virtual NLMISC::IEventEmitter* NL3D::CDriverGL::getEventEmitter void    [inline, virtual]
 

Implements NL3D::IDriver.

Definition at line 239 of file driver_opengl.h.

GLint NL3D::CDriverGL::getGlTextureFormat ITexture   tex,
bool &    compressed
[private]
 

Definition at line 84 of file driver_opengl_texture.cpp.

References _Extensions, _ForceDXTCCompression, GL_DSDT_NV, GL_DU8DV8_ATI, and nlassert.

Referenced by copyFrameBufferToTexture, setupTextureEx, and uploadTexture.

uint32 NL3D::CDriverGL::getHwnd   [inline]
 

Definition at line 200 of file driver_opengl.h.

virtual uint32 NL3D::CDriverGL::getImplementationVersion   const [inline, virtual]
 

Get the driver version.

Not the same than interface version. Incremented at each implementation change.

See also:
InterfaceVersion

Implements NL3D::IDriver.

Definition at line 353 of file driver_opengl.h.

References ReleaseVersion.

NLMISC::IInputDeviceManager * NL3D::CDriverGL::getLowLevelInputDeviceManager   [virtual]
 

Check wether there is a low level device manager available, and get its interface.

Return NULL if not available From this interface you can deal with mouse and keyboard as above, but you can also manage game device (joysticks, joypads ...)

Implements NL3D::IDriver.

Definition at line 2204 of file driver_opengl.cpp.

uint NL3D::CDriverGL::getMaxLight   const [virtual]
 

return the number of light supported by driver.

typically 8.

See also:
enableLight() setLight()

Implements NL3D::IDriver.

Definition at line 35 of file driver_opengl_light.cpp.

References _MaxDriverLight.

uint NL3D::CDriverGL::getMaxVerticesByVertexBufferHard   const [virtual]
 

return How many vertices VertexBufferHard support.

Implements NL3D::IDriver.

Definition at line 392 of file driver_opengl_vertex.cpp.

References _MaxVerticesByVBHard.

sint NL3D::CDriverGL::getNbTextureStages   const [virtual]
 

Get the number of texture stage avaliable, for multitexturing (Normal material shaders). Valid only after setDisplay().

Implements NL3D::IDriver.

Definition at line 2239 of file driver_opengl.cpp.

References inlGetNumTextStages.

CTextureCube * NL3D::CDriverGL::getSpecularCubeMap uint    exp [private]
 

get (and if necessary, build) a cube map used for specular lighting. The range for exponent is limited, and only the best fit is used.

Definition at line 1183 of file driver_opengl_material.cpp.

References _SpecularTextureCubes, NL3D::BuildCubeMap, NLMISC::clamp, NLAISCRIPT::l, nlassert, and NLMISC::smprintf.

Referenced by getDiffuseCubeMap, setupPPLNoSpecPass, and setupPPLPass.

CMaterial::TShader NL3D::CDriverGL::getSupportedShader CMaterial::TShader    shader [private]
 

test wether the given shader is supported, and gives back a supported shader.

Definition at line 209 of file driver_opengl_material.cpp.

References _SupportPerPixelShader, _SupportPerPixelShaderNoSpec, and inlGetNumTextStages.

Referenced by setupMaterial.

uint32 NL3D::CDriverGL::getUsedTextureMemory   const [virtual]
 

Return the amount of texture video memory used since last swapBuffers() call.

Before use this method, you should enable the sum with enableUsedTextureMemorySum().

Implements NL3D::IDriver.

Definition at line 2040 of file driver_opengl.cpp.

References _TextureUsed, and CTextureDrvInfosGL.

const char * NL3D::CDriverGL::getVideocardInformation   [virtual]
 

Get videocard informations.

get the official name of the driver

Implements NL3D::IDriver.

Definition at line 1780 of file driver_opengl.cpp.

References _Initialized, and NLMISC::smprintf.

CMatrix NL3D::CDriverGL::getViewMatrix   const [virtual]
 

Implements NL3D::IDriver.

Definition at line 112 of file driver_opengl_matrix.cpp.

References _UserViewMtx.

emptyProc NL3D::CDriverGL::getWindowProc   [virtual]
 

Implements NL3D::IDriver.

Definition at line 1248 of file driver_opengl.cpp.

References NL3D::emptyProc.

void NL3D::CDriverGL::getWindowSize uint32   width,
uint32   height
[virtual]
 

Get the width and the height of the window.

Implements NL3D::IDriver.

Definition at line 1736 of file driver_opengl.cpp.

References height, WGL_PBUFFER_HEIGHT_ARB, WGL_PBUFFER_WIDTH_ARB, and width.

Referenced by clipRect, fillBuffer, getBuffer, and getZBuffer.

void NL3D::CDriverGL::getZBuffer std::vector< float > &    zbuffer [virtual]
 

get the ZBuffer (back buffer).

Parameters:
zbuffer  the returned array of Z. size of getWindowSize() .

Implements NL3D::IDriver.

Definition at line 1879 of file driver_opengl.cpp.

References getWindowSize, and getZBufferPart.

void NL3D::CDriverGL::getZBufferPart std::vector< float > &    zbuffer,
NLMISC::CRect   rect
[virtual]
 

get a part of the ZBuffer (back buffer).

NB: 0,0 is the bottom left corner of the screen.

Parameters:
zbuffer  the returned array of Z. size of rec.Width*rec.Height.
rect  the in/out (wanted/clipped) part of ZBuffer to retrieve.

Implements NL3D::IDriver.

Definition at line 1865 of file driver_opengl.cpp.

References clipRect, NLMISC::CRect::Height, NLMISC::CRect::Width, NLMISC::CRect::X, and NLMISC::CRect::Y.

Referenced by getZBuffer.

bool NL3D::CDriverGL::init   [virtual]
 

Implements NL3D::IDriver.

Definition at line 272 of file driver_opengl.cpp.

References nlwarning.

void NL3D::CDriverGL::initCausticCubeMap   [static, private]
 

void NL3D::CDriverGL::initEMBM   [private]
 

Definition at line 2343 of file driver_opengl.cpp.

References _DriverGLStates, _Extensions, _StageSupportEMBM, GL_BUMP_NUM_TEX_UNITS_ATI, GL_BUMP_TARGET_ATI, GL_BUMP_TEX_UNITS_ATI, NL3D::IDRV_MAT_MAXTEXTURES, nglGetTexBumpParameterivATI, and supportEMBM.

bool NL3D::CDriverGL::initVertexArrayRange uint    agpMem,
uint    vramMem
[virtual]
 

Allocate the initial VertexArray Memory.

(no-op if !supportVertexBufferHard()). VertexArrayRange is first reseted, so any VBhard created before will be deleted. NB: call it after setDisplay(). But setDisplay() by default call initVertexArrayRange(16Mo, 0); so this is not necessary. NB: If allocation fails, mem/=2, and retry, until mem < 500K.

Parameters:
agpMem  ammount of AGP Memory required. if 0, reseted.
vramMem  ammount of VRAM Memory required. if 0, reseted.
Returns:
false if one the Buffer has not been allocated (at least at 500K).

Implements NL3D::IDriver.

Definition at line 1069 of file driver_opengl_vertex.cpp.

References _AGPVertexArrayRange, _MaxVerticesByVBHard, _VRAMVertexArrayRange, NL3D_DRV_VERTEXARRAY_MINIMUM_SIZE, nlinfo, resetVertexArrayRange, and supportVertexBufferHard.

sint NL3D::CDriverGL::inlGetNumTextStages   const [inline, private]
 

Same as getNbTextureStages(), but faster because inline, and not virtual!!

Definition at line 908 of file driver_opengl.h.

References _Extensions.

Referenced by computeLightMapInfos, getNbTextureStages, getSupportedShader, resetLightMapVertexSetup, resetTextureShaders, setMatrix2DForTextureOffsetAddrMode, setupGlArraysStd, setupLightMapPass, setupMaterial, setupPPLNoSpecPass, setupPPLPass, setupTextureEx, swapBuffers, swapTextureHandle, toggleGlArraysForEXTVertexShader, and toggleGlArraysForNVVertexProgram.

bool NL3D::CDriverGL::isActive   [virtual]
 

Return true if driver is still active. Return false else. If he user close the window, must return false.

Implements NL3D::IDriver.

Definition at line 1766 of file driver_opengl.cpp.

bool NL3D::CDriverGL::isEMBMSupportedAtStage uint    stage const [virtual]
 

Implements NL3D::IDriver.

Definition at line 2321 of file driver_opengl.cpp.

References _StageSupportEMBM, NL3D::IDRV_MAT_MAXTEXTURES, nlassert, and supportEMBM.

virtual bool NL3D::CDriverGL::isForceNormalize   const [inline, virtual]
 

return the forceNormalize() state.

Implements NL3D::IDriver.

Definition at line 293 of file driver_opengl.h.

References _ForceNormalize.

bool NL3D::CDriverGL::isTextureAddrModeSupported CMaterial::TTexAddressingMode    mode const [virtual]
 

test wether a texture addressing mode is supported.

Implements NL3D::IDriver.

Definition at line 2073 of file driver_opengl.cpp.

References _Extensions.

bool NL3D::CDriverGL::isTextureExist const ITexture   tex [virtual]
 

is the texture is set up in the driver.

Implements NL3D::IDriver.

Definition at line 1279 of file driver_opengl.cpp.

References NL3D::IDriver::_SyncTexDrvInfos, and NL3D::IDriver::getTextureShareName.

bool NL3D::CDriverGL::isVertexProgramEmulated   const [private, virtual]
 

Does the driver supports vertex program, but emulated by CPU ?

Implements NL3D::IDriver.

Definition at line 70 of file driver_opengl_vertex_program.cpp.

References _Extensions.

bool NL3D::CDriverGL::isVertexProgramEnabled   const [inline, private]
 

Definition at line 870 of file driver_opengl.h.

References _VertexProgramEnabled.

Referenced by setupGlArrays, toggleGlArraysForEXTVertexShader, and toggleGlArraysForNVVertexProgram.

bool NL3D::CDriverGL::isVertexProgramSupported   const [private, virtual]
 

Does the driver supports vertex programs ?

Implements NL3D::IDriver.

Definition at line 64 of file driver_opengl_vertex_program.cpp.

References _Extensions.

void NL3D::CDriverGL::mapTextureStageToUV uint    stage,
uint    uv
[virtual]
 

Say what Texture Stage use what UV coord.

by default activeVertexBuffer*() methods map all stage i to UV i. You can change this behavior, after calling activeVertexBuffer*(), by using this method.

eg: mapTextureStageToUV(0,2) will force the 0th texture stage to use the 2th UV.

Warning! This DOESN'T work with VertexProgram enabled!! (assert)

Warning!: some CMaterial Shader may change automatically this behavior too when setupMaterial() (and so render*()) is called. But Normal shader doesn't do it.

Implements NL3D::IDriver.

Definition at line 362 of file driver_opengl_vertex.cpp.

References _LastVB, and setupUVPtr.

void NL3D::CDriverGL::multiplyModelMatrix const CMatrix &    mtx [virtual]
 

multipliy the model matrix.

NB: you must use multiplyModelMatrix() AFTER setupModelMatrix() (and so setupViewMatrix()) or an other multiplyModelMatrix(), or else undefined results.

Using of multiplyModelMatrix() instead of just one setupModelMatrix() may be usefull for precision consideration.

Implements NL3D::IDriver.

Definition at line 137 of file driver_opengl_matrix.cpp.

References _ModelViewMatrix, _ModelViewMatrixDirty, and _RenderSetupDirty.

uint32 NL3D::CDriverGL::profileAllocatedTextureMemory   [virtual]
 

Return the amount of Texture memory requested.

taking mipmap, compression, texture format, etc... into account. NB: because of GeForce*, RGB888 is considered to be 32 bits. So it may be false for others cards :).

Implements NL3D::IDriver.

Definition at line 2010 of file driver_opengl.cpp.

References _AllocatedTextureMemory.

void NL3D::CDriverGL::profileRenderedPrimitives CPrimitiveProfile   pIn,
CPrimitiveProfile   pOut
[virtual]
 

Special : with vertex program, using the extension EXT_vertex_shader, fog is emulated using 1 more constant to scale result to [0, 1].

Implements NL3D::IDriver.

Definition at line 2002 of file driver_opengl.cpp.

References _PrimitiveProfileIn, and _PrimitiveProfileOut.

uint32 NL3D::CDriverGL::profileSetupedMaterials   const [virtual]
 

Get the number of material setuped from the last swapBuffers() call.

Implements NL3D::IDriver.

Definition at line 2017 of file driver_opengl.cpp.

References _NbSetupMaterialCall.

uint32 NL3D::CDriverGL::profileSetupedModelMatrix   const [virtual]
 

Get the number of matrix setuped from the last swapBuffers() call.

Implements NL3D::IDriver.

Definition at line 2024 of file driver_opengl.cpp.

References _NbSetupModelMatrixCall.

void NL3D::CDriverGL::refreshProjMatrixFromGL   [private]
 

Definition at line 2246 of file driver_opengl.cpp.

References _GLProjMat, _ProjMatDirty, and NLMISC::CMatrix::set.

Referenced by setConstantMatrix.

void NL3D::CDriverGL::refreshRenderSetup   [inline, private]
 

Definition at line 780 of file driver_opengl.h.

References doRefreshRenderSetup.

Referenced by render, renderPoints, renderQuads, renderSimpleTriangles, renderTriangles, and setConstantMatrix.

bool NL3D::CDriverGL::release   [virtual]
 

Deriver should calls IDriver::release() first, to destroy all driver components (textures, shaders, VBuffers).

Reimplemented from NL3D::IDriver.

Definition at line 1434 of file driver_opengl.cpp.

References _AGPVertexArrayRange, _FullScreen, _Initialized, _VRAMVertexArrayRange, nlinfo, nlwarning, and resetVertexArrayRange.

Referenced by ~CDriverGL.

bool NL3D::CDriverGL::render CPrimitiveBlock   PB,
CMaterial   Mat
[virtual]
 

render a block of primitive with previously setuped VertexBuffer / Matrixes.

Implements NL3D::IDriver.

Definition at line 135 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _PrimitiveProfileIn, _PrimitiveProfileOut, beginMultiPass, endMultiPass, refreshRenderSetup, setupMaterial, and setupPass.

void NL3D::CDriverGL::renderPoints CMaterial   Mat,
uint32    numPoints
[virtual]
 

render points with previously setuped VertexBuffer / Matrixes.

Implements NL3D::IDriver.

Definition at line 252 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _PrimitiveProfileIn, _PrimitiveProfileOut, beginMultiPass, endMultiPass, refreshRenderSetup, setupMaterial, and setupPass.

void NL3D::CDriverGL::renderQuads CMaterial   Mat,
uint32    startIndex,
uint32    numQuads
[virtual]
 

render quads with previously setuped VertexBuffer / Matrixes.

Quads are stored as a sequence in the vertex buffer.

Implements NL3D::IDriver.

Definition at line 293 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _PrimitiveProfileIn, _PrimitiveProfileOut, beginMultiPass, endMultiPass, refreshRenderSetup, setupMaterial, and setupPass.

void NL3D::CDriverGL::renderSimpleTriangles uint32   tri,
uint32    ntris
[virtual]
 

render a list of triangles with previously setuped VertexBuffer / Matrixes, AND previously setuped MATERIAL!! This use the last material setuped.

It should be a "Normal shader" material, because no multi-pass is allowed with this method. Actually, it is like a straight drawTriangles() in OpenGL. NB: nlassert() if ntris is 0!!!! this is unlike other render() call methods. For optimisation concern. NB: this is usefull for landscape....

Implements NL3D::IDriver.

Definition at line 225 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _PrimitiveProfileIn, _PrimitiveProfileOut, nlassert, and refreshRenderSetup.

void NL3D::CDriverGL::renderTriangles CMaterial   Mat,
uint32   tri,
uint32    ntris
[virtual]
 

render a list of triangles with previously setuped VertexBuffer / Matrixes.

NB: this "was" usefull for landscape....

Implements NL3D::IDriver.

Definition at line 186 of file driver_opengl_vertex.cpp.

References _CurrentVertexBufferHard, _PrimitiveProfileIn, _PrimitiveProfileOut, beginMultiPass, endMultiPass, refreshRenderSetup, setupMaterial, and setupPass.

void NL3D::CDriverGL::resetLightMapVertexSetup   [private]
 

Definition at line 880 of file driver_opengl_material.cpp.

References _DriverGLStates, _LastVB, _LastVertexSetupIsLightMap, _LightMapUVMap, inlGetNumTextStages, and setupUVPtr.

Referenced by setupMaterial.

void NL3D::CDriverGL::resetTextureShaders   [private]
 

Definition at line 1226 of file driver_opengl.cpp.

References _CurrentTexAddrMode, _DriverGLStates, _Extensions, _NVTextureShaderEnabled, GL_PREVIOUS_TEXTURE_INPUT_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_SHADER_NV, and inlGetNumTextStages.

void NL3D::CDriverGL::resetVertexArrayRange   [private]
 

Definition at line 1047 of file driver_opengl_vertex.cpp.

References _AGPVertexArrayRange, _CurrentVertexBufferHard, _VertexBufferHardSet, and _VRAMVertexArrayRange.

Referenced by initVertexArrayRange, and release.

void NL3D::CDriverGL::setAmbientColor CRGBA    color [virtual]
 

Set ambiant.

Parameters:
color  is the new global ambiant color for the scene.
See also:
setLight(), enableLight()

Implements NL3D::IDriver.

Definition at line 153 of file driver_opengl_light.cpp.

void NL3D::CDriverGL::setBlendConstantColor NLMISC::CRGBA    col [virtual]
 

see supportBlendConstantColor().

Set the current Blend Constant Color.

Implements NL3D::IDriver.

Definition at line 2221 of file driver_opengl.cpp.

References _CurrentBlendConstantColor, _Extensions, NLMISC::CRGBA::A, NLMISC::CRGBA::B, NLMISC::CRGBA::G, nglBlendColorEXT, and NLMISC::CRGBA::R.

void NL3D::CDriverGL::setCapture bool    b [virtual]
 

If true, capture the mouse to force it to stay under the window.

NB : this has no effects if a low level mouse is used

Implements NL3D::IDriver.

Definition at line 1795 of file driver_opengl.cpp.

void NL3D::CDriverGL::setColorMask bool    bRed,
bool    bGreen,
bool    bBlue,
bool    bAlpha
[virtual]
 

Set the color mask filter through where the operation done will pass.

Implements NL3D::IDriver.

Definition at line 1316 of file driver_opengl.cpp.

void NL3D::CDriverGL::setConstant uint    index,
uint    num,
const double *    src
[private, virtual]
 

setup several 4 double csts taken from the given tab.

Implements NL3D::IDriver.

Definition at line 1274 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameters4dvNV, nglSetInvariantEXT, num, and src.

void NL3D::CDriverGL::setConstant uint    index,
uint    num,
const float *    src
[private, virtual]
 

setup several 4 float csts taken from the given tab.

Implements NL3D::IDriver.

Definition at line 1257 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameters4fvNV, nglSetInvariantEXT, num, and src.

void NL3D::CDriverGL::setConstant uint    indexStart,
const NLMISC::CVectorD   value
[private, virtual]
 

Implements NL3D::IDriver.

Definition at line 1240 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameter4dNV, nglSetInvariantEXT, value, NLMISC::CVectorD::x, NLMISC::CVectorD::y, and NLMISC::CVectorD::z.

void NL3D::CDriverGL::setConstant uint    indexStart,
const NLMISC::CVector   value
[private, virtual]
 

Implements NL3D::IDriver.

Definition at line 1222 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameter4fNV, nglSetInvariantEXT, value, NLMISC::CVector::x, NLMISC::CVector::y, and NLMISC::CVector::z.

void NL3D::CDriverGL::setConstant uint    index,
double   ,
double   ,
double   ,
double   
[private, virtual]
 

Implements NL3D::IDriver.

Definition at line 1204 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameter4dNV, and nglSetInvariantEXT.

void NL3D::CDriverGL::setConstant uint    index,
float   ,
float   ,
float   ,
float   
[private, virtual]
 

Setup constant values.

Implements NL3D::IDriver.

Definition at line 1186 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, GL_VERTEX_PROGRAM_NV, index, nglProgramParameter4fNV, and nglSetInvariantEXT.

Referenced by setupFog.

void NL3D::CDriverGL::setConstantMatrix uint    index,
IDriver::TMatrix    matrix,
IDriver::TTransform    transform
[private]
 

Definition at line 1313 of file driver_opengl_vertex_program.cpp.

References _EVSConstantHandle, _Extensions, _GLProjMat, _ModelViewMatrix, GL_IDENTITY_NV, GL_VERTEX_PROGRAM_NV, GLMatrix, GLTransform, index, matrix, nglSetInvariantEXT, nglTrackMatrixNV, refreshProjMatrixFromGL, refreshRenderSetup, and transform.

bool NL3D::CDriverGL::setDisplay void *    wnd,
const GfxMode   mode
throw (EBadDisplay) [virtual]
 

Implements NL3D::IDriver.

Definition at line 358 of file driver_opengl.cpp.

References GL_CURRENT_VERTEX_EXT, GL_FULL_RANGE_EXT, GL_INVARIANT_EXT, GL_VECTOR_EXT, height, nglBindParameterEXT, nglBindTextureUnitParameterEXT, nglGenSymbolsEXT, NL3D_DRV_VERTEXARRAY_AGP_INIT_SIZE, nldebug, nlerror, nlinfo, nlwarning, NL3D::registerGlExtensions, WGL_ALPHA_BITS_ARB, WGL_BLUE_BITS_ARB, WGL_DEPTH_BITS_ARB, WGL_DRAW_TO_PBUFFER_ARB, WGL_GREEN_BITS_ARB, WGL_PBUFFER_HEIGHT_ARB, WGL_PBUFFER_WIDTH_ARB, WGL_RED_BITS_ARB, NLMISC::CRGBA::White, and width.

void NL3D::CDriverGL::setEMBMMatrix const uint    stage,
const float    mat[4]
[virtual]
 

Implements NL3D::IDriver.

Definition at line 2330 of file driver_opengl.cpp.

References _DriverGLStates, _Extensions, GL_BUMP_ROT_MATRIX_ATI, NL3D::IDRV_MAT_MAXTEXTURES, nglTexBumpParameterfvATI, nlassert, and supportEMBM.

void NL3D::CDriverGL::setFrustum float    left,
float    right,
float    bottom,
float    top,
float    znear,
float    zfar,
bool    perspective = true
[virtual]
 

Implements NL3D::IDriver.

Definition at line 31 of file driver_opengl_matrix.cpp.

References _OODeltaZ, and _ProjMatDirty.

void NL3D::CDriverGL::setLight uint8    num,
const CLight   light
[virtual]
 

Setup a light.

You must call enableLight() to active the ligth.

Parameters:
num  is the number of the light to set.
light  is a light to set in this slot.
See also:
enableLight()

Implements NL3D::IDriver.

Definition at line 43 of file driver_opengl_light.cpp.

References _LightMode, _LightSetupDirty, _MaxDriverLight, _RenderSetupDirty, _WorldLightDirection, _WorldLightPos, and num.

void NL3D::CDriverGL::setMatrix2DForTextureOffsetAddrMode const uint    stage,
const float    mat[4]
[virtual]
 

setup the 2D matrix for the OffsetTexture, OffsetTextureScale and OffsetTexture addressing mode It should be stored as the following [a0 a1] [a2 a3].

Implements NL3D::IDriver.

Definition at line 2087 of file driver_opengl.cpp.

References _DriverGLStates, GL_OFFSET_TEXTURE_MATRIX_NV, GL_TEXTURE_SHADER_NV, inlGetNumTextStages, nlassert, and supportTextureShaders.

bool NL3D::CDriverGL::setMonitorColorProperties const CMonitorColorProperties   properties [virtual]
 

Setup monitor color properties.

Return false if setup failed.

Implements NL3D::IDriver.

Definition at line 2257 of file driver_opengl.cpp.

References min, nlwarning, and value.

void NL3D::CDriverGL::setMousePos float    x,
float    y
[virtual]
 

x and y must be between 0.0 and 1.0.

Implements NL3D::IDriver.

Definition at line 1714 of file driver_opengl.cpp.

References x, and y.

void NL3D::CDriverGL::setPerPixelLightingLight CRGBA    diffuse,
CRGBA    specular,
float    shininess
[virtual]
 

Setup the light used for per pixel lighting.

The given values should have been modulated by the material diffuse and specular. This is only useful for material that have their shader set as 'PerPixelLighting'

Parameters:
the  light used for per pixel lighting

Implements NL3D::IDriver.

Definition at line 2140 of file driver_opengl.cpp.

References _PPLExponent, _PPLightDiffuseColor, and _PPLightSpecularColor.

void NL3D::CDriverGL::setPolygonMode TPolygonMode    mode [virtual]
 

Set the global polygon mode.

Can be filled, line or point. The implementation driver must call IDriver::setPolygonMode and active this mode.

Parameters:
polygon  mode choose in this driver.
See also:
getPolygonMode(), TPolygonMode

Reimplemented from NL3D::IDriver.

Definition at line 1936 of file driver_opengl.cpp.

References NL3D::IDriver::Filled, NL3D::IDriver::Line, and NL3D::IDriver::Point.

void NL3D::CDriverGL::setTextureEnvFunction uint    stage,
CMaterial   mat
 

Setup texture env functions. Used by setupMaterial.

Definition at line 114 of file driver_opengl_material.cpp.

References _DriverGLStates, activateTexEnvColor, and activateTexEnvMode.

Referenced by setupMaterial.

void NL3D::CDriverGL::setupCloudPass uint    pass [private]
 

Definition at line 1641 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, activateTexEnvColor, activateTexture, nlassert, TexEnvSpecialCloudStage0, and TexEnvSpecialCloudStage1.

Referenced by setupPass.

bool NL3D::CDriverGL::setupEXTVertexShader const CVPParser::TProgram   program,
GLuint    id,
uint    variants[EVSNumVariants],
uint16   usedInputRegisters
[private]
 

Setup a vertex shader from its parsed program.

Definition at line 371 of file driver_opengl_vertex_program.cpp.

References _EVSColorHandle, _EVSConstantHandle, _EVSNormalHandle, _EVSPositionHandle, _EVSTexHandle, CVPInstruction::ADD, CVPOperand::AddressRegister, CVPInstruction::ARL, CVPSwizzle::Comp, CVPOperand::Constant, NL3D::convInputRegisterToVBFlag, NL3D::convOutputRegisterToEXTVertexShader, NL3D::convSwizzleToGLFormat, NL3D::doSwizzle, NL3D::doWriteMask, CVPInstruction::DP3, CVPInstruction::DP4, CVPInstruction::DST, CVPInstruction::EOpcode, EVS_INFO, EVSFogCoordsVariant, EVSNumVariants, EVSPaletteSkinVariant, EVSSecondaryColorVariant, EVSSkinWeightVariant, CVPInstruction::EXPP, GL_FULL_RANGE_EXT, GL_LOCAL_CONSTANT_EXT, GL_LOCAL_EXT, GL_NORMALIZED_RANGE_EXT, GL_ONE_EXT, GL_OP_ADD_EXT, GL_OP_CLAMP_EXT, GL_OP_DOT3_EXT, GL_OP_DOT4_EXT, GL_OP_EXP_BASE_2_EXT, GL_OP_FLOOR_EXT, GL_OP_FRAC_EXT, GL_OP_INDEX_EXT, GL_OP_LOG_BASE_2_EXT, GL_OP_MADD_EXT, GL_OP_MAX_EXT, GL_OP_MIN_EXT, GL_OP_MOV_EXT, GL_OP_MUL_EXT, GL_OP_NEGATE_EXT, GL_OP_POWER_EXT, GL_OP_RECIP_EXT, GL_OP_RECIP_SQRT_EXT, GL_OP_SET_GE_EXT, GL_OP_SET_LT_EXT, GL_OUTPUT_COLOR0_EXT, GL_OUTPUT_COLOR1_EXT, GL_OUTPUT_FOG_EXT, GL_OUTPUT_TEXTURE_COORD0_EXT, GL_OUTPUT_TEXTURE_COORD7_EXT, GL_SCALAR_EXT, GL_VARIANT_EXT, GL_VECTOR_EXT, GL_VERTEX_SHADER_OPTIMIZED_EXT, GL_W_EXT, GL_X_EXT, GL_Y_EXT, GL_Z_EXT, GL_ZERO_EXT, GLboolean, GLuint, id, index, CVPOperand::Indexed, CVPOperand::InputRegister, CVPSwizzle::isIdentity, CVPSwizzle::isScalar, NLAISCRIPT::l, CVPInstruction::LIT, CVPInstruction::LOG, CVPInstruction::MAD, CVPInstruction::MAX, CVPInstruction::MIN, CVPInstruction::MOV, CVPInstruction::MUL, CVPOperand::Negate, nglBeginVertexShaderEXT, nglBindVertexShaderEXT, nglEndVertexShaderEXT, nglExtractComponentEXT, nglGenSymbolsEXT, nglInsertComponentEXT, nglSetLocalConstantEXT, nglShaderOp1EXT, nglShaderOp2EXT, nglShaderOp3EXT, nlassert, nlinfo, nlstop, nlwarning, CVPOperand::OFogCoord, CVPOperand::OHPosition, CVPOperand::OPrimaryColor, CVPOperand::OSecondaryColor, CVPOperand::OutputRegister, program, CVPInstruction::RCP, CVPInstruction::RSQ, CVPInstruction::SGE, CVPInstruction::SLT, CVPOperand::Swizzle, CVPParser::TProgram, CVPOperand::Type, CVPOperand::Value, CVPOperand::Variable, and CVPOperand::WriteMask.

Referenced by activeEXTVertexShader.

void NL3D::CDriverGL::setupFog float    start,
float    end,
CRGBA    color
[virtual]
 

setup fog parameters. fog must enabled to see result. start and end are in [0,1] range.

Implements NL3D::IDriver.

Definition at line 1970 of file driver_opengl.cpp.

References _CurrentFogColor, _Extensions, and setConstant.

void NL3D::CDriverGL::setupGlArrays CVertexBufferInfo   vb [private]
 

setup GL arrays, with a vb info.

Definition at line 915 of file driver_opengl_vertex.cpp.

References _Extensions, _LastVertexSetupIsLightMap, isVertexProgramEnabled, setupGlArraysForEXTVertexShader, setupGlArraysForNVVertexProgram, setupGlArraysStd, toggleGlArraysForEXTVertexShader, and toggleGlArraysForNVVertexProgram.

Referenced by activeVertexBuffer, and activeVertexBufferHard.

void NL3D::CDriverGL::setupGlArraysForEXTVertexShader CVertexBufferInfo   vb [private]
 

Definition at line 802 of file driver_opengl_vertex.cpp.

References _DriverGLStates, _LastSetuppedVP, CVertexProgamDrvInfosGL, GLType, GLVertexAttribIndex, NL3D::IDriver::IVertexProgramDrvInfos, nglArrayObjectATI, nglVariantArrayObjectATI, nglVariantPointerEXT, nlassert, nlstop, NumCoordinatesType, type, and value.

Referenced by setupGlArrays.

void NL3D::CDriverGL::setupGlArraysForNVVertexProgram CVertexBufferInfo   vb [private]
 

Definition at line 720 of file driver_opengl_vertex.cpp.

References _DriverGLStates, GLType, GLVertexAttribIndex, nglSecondaryColorPointerEXT, nglVertexAttribPointerNV, NumCoordinatesType, type, and value.

Referenced by setupGlArrays.

void NL3D::CDriverGL::setupGlArraysStd CVertexBufferInfo   vb [private]
 

Tools fct used by setupGLArrays.

Definition at line 559 of file driver_opengl_vertex.cpp.

References _DriverGLStates, inlGetNumTextStages, nglArrayObjectATI, nlassert, and setupUVPtr.

Referenced by setupGlArrays.

void NL3D::CDriverGL::setupLightMapPass uint    pass [private]
 

Definition at line 621 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, _FogEnabled, _LastVB, _LastVertexSetupIsLightMap, _LightMapLastStageEnv, _LightMapLUT, _LightMapUVMap, _NLightMapPass, _NLightMapPerPass, _NLightMaps, activateTexEnvColor, activateTexEnvMode, activateTexture, GL_MODULATE_ADD_ATIX, inlGetNumTextStages, min, nlassert, setupUVPtr, and TexEnvSpecialLightMap.

Referenced by setupPass.

bool NL3D::CDriverGL::setupMaterial CMaterial   mat [virtual]
 

For objects with caustics, setup the first texture (which actually is the one from the material).

Implements NL3D::IDriver.

Definition at line 225 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentMaterialSupportedShader, _CurrentTexAddrMode, _DriverGLStates, _Extensions, _LastVertexSetupIsLightMap, _NbSetupMaterialCall, _OODeltaZ, NL3D::IDriver::_Shaders, activateTexture, NL3D::convBlend, NL3D::convColor, NL3D::convTexAddr, NL3D::convZFunction, disableUserTextureMatrix, enableNVTextureShader, getSupportedShader, GL_SHADER_OPERATION_NV, GL_TEXTURE_SHADER_NV, NL3D::IDRV_MAT_ALPHA_TEST, NL3D::IDRV_MAT_BLEND, NL3D::IDRV_MAT_DOUBLE_SIDED, NL3D::IDRV_MAT_LIGHTING, NL3D::IDRV_MAT_TEX_ADDR, NL3D::IDRV_MAT_ZWRITE, NL3D::IDRV_TOUCHED_ALL, NL3D::IDRV_TOUCHED_BLENDFUNC, NL3D::IDRV_TOUCHED_LIGHTING, NL3D::IDRV_TOUCHED_SHADER, NL3D::IDRV_TOUCHED_ZFUNC, inlGetNumTextStages, NL3D::IDriver::IShader, NL3D::ItShaderPtrList, resetLightMapVertexSetup, setTextureEnvFunction, setupTexture, and setupUserTextureMatrix.

Referenced by render, renderPoints, renderQuads, and renderTriangles.

void NL3D::CDriverGL::setupModelMatrix const CMatrix &    mtx [virtual]
 

setup the model matrix.

NB: you must setupModelMatrix() AFTER setupViewMatrix(), or else undefined results.

Implements NL3D::IDriver.

Definition at line 118 of file driver_opengl_matrix.cpp.

References _ModelViewMatrix, _ModelViewMatrixDirty, _NbSetupModelMatrixCall, _PZBCameraPos, _RenderSetupDirty, and _ViewMtx.

void NL3D::CDriverGL::setupPass uint    pass [private]
 

active the ith pass of this material.

Definition at line 511 of file driver_opengl_material.cpp.

References setupCloudPass, setupLightMapPass, setupPPLNoSpecPass, setupPPLPass, and setupSpecularPass.

Referenced by render, renderPoints, renderQuads, and renderTriangles.

void NL3D::CDriverGL::setupPPLNoSpecPass uint    pass [private]
 

Definition at line 1469 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, _PPLightDiffuseColor, activateTexEnvColor, activateTexEnvMode, activateTexture, getSpecularCubeMap, GL_MODULATE_ADD_ATIX, inlGetNumTextStages, nlassert, setupTexture, and TexEnvSpecialPPLStage0.

Referenced by setupPass.

void NL3D::CDriverGL::setupPPLPass uint    pass [private]
 

Definition at line 1284 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, _PPLightDiffuseColor, _PPLightSpecularColor, activateTexEnvColor, activateTexEnvMode, activateTexture, getSpecularCubeMap, GL_MODULATE_ADD_ATIX, inlGetNumTextStages, nlassert, setupTexture, TexEnvSpecialPPLStage0, and TexEnvSpecialPPLStage2.

Referenced by setupPass.

void NL3D::CDriverGL::setupScissor const class CScissor   scissor [virtual]
 

Set the current Scissor.

Parameters:
scissor  is a scissor to setup the current Scissor, in Window relative coordinate (0,1).

Implements NL3D::IDriver.

Definition at line 1628 of file driver_opengl.cpp.

References NLMISC::clamp, height, width, x, and y.

void NL3D::CDriverGL::setupSpecularPass uint    pass [private]
 

Definition at line 924 of file driver_opengl_material.cpp.

References _CurrentMaterial, _CurrentTexEnvSpecial, _DriverGLStates, _Extensions, activateTexEnvMode, CTexEnvSpecial, GL_MODULATE_ADD_ATIX, TexEnvSpecialSpecularStage0, TexEnvSpecialSpecularStage1, and TexEnvSpecialSpecularStage1NoText.

Referenced by setupPass.

bool NL3D::CDriverGL::setupTexture ITexture   tex [virtual]
 

setup a texture, generate and upload if needed.

same as setupTextureEx(tex, true, dummy);

Implements NL3D::IDriver.

Definition at line 312 of file driver_opengl_texture.cpp.

References setupTextureEx.

Referenced by copyFrameBufferToTexture, setupMaterial, setupPPLNoSpecPass, setupPPLPass, and swapTextureHandle.

bool NL3D::CDriverGL::setupTextureEx ITexture   tex,
bool    bUpload,
bool &    bAllUploaded,
bool    bMustRecreateSharedTexture = false
[virtual]
 

setup a texture in the driver.

Parameters:
bUpload  if true the texture is created and uploaded to VRAM, if false the texture is only created it is useful for the async upload texture to only create the texture and then make invalidate to upload small piece each frame. There is ONE case where bUpload is forced to be true inside the method: if the texture must be converted to RGBA.
See also:
bAllUploaded
Parameters:
bAllUploaded  true if any upload arise (texture invalid, must convert texture etc...).
bMustRecreateSharedTexture  if true and if the texture supportSharing, then the texture is recreated (and uploaded if bUpload==true) into the shared DrvInfo (if found). Default setup (false) imply that the DrvInfo is only bound to tex (thus creating and uploading nothing) NB: the texture must be at least touch()-ed for the recreate to work.

Implements NL3D::IDriver.

Definition at line 319 of file driver_opengl_texture.cpp.

References _AllocatedTextureMemory, _CurrentTexture, _CurrentTextureInfoGL, _DriverGLStates, _Extensions, _ForceTextureResizePower, NL3D::IDriver::_SyncTexDrvInfos, NL3D::IDriver::_TexDrvShares, activateTexture, NLMISC::clamp, computeMipMapMemoryUsage, CTextureDrvInfosGL, NL3D::IDriver::CTextureDrvShare, NL3D::getGlSrcTextureComponentType, NL3D::getGlSrcTextureFormat, getGlTextureFormat, NL3D::getTextureGl, NL3D::IDriver::getTextureShareName, inlGetNumTextStages, NL3D::IDriver::ITextureDrvInfos, NL3D::ItTexDrvInfoPtrMap, NL3D::ItTexDrvSharePtrList, min, nglCompressedTexImage2DARB, NL3D::sameDXTCFormat, NL3D::translateMagFilterToGl, NL3D::translateMinFilterToGl, NL3D::translateWrapToGl, and w.

Referenced by setupTexture.

void NL3D::CDriverGL::setupUserTextureMatrix uint    numStages,
CMaterial   mat
 

setup the texture matrix for a given number of stages (starting from 0).

Definition at line 148 of file driver_opengl_material.cpp.

References _DriverGLStates, _UserTexMatEnabled, NL3D::IDRV_MAT_USER_TEX_FIRST_BIT, and NL3D::IDRV_MAT_USER_TEX_MAT_ALL.

Referenced by setupMaterial.

void NL3D::CDriverGL::setupUVPtr uint    stage,
CVertexBufferInfo   VB,
uint    uvId
[private]
 

setup a texture stage with an UV from VB.

Definition at line 332 of file driver_opengl_vertex.cpp.

References _DriverGLStates, _LastSetupGLArrayVertexProgram, nglArrayObjectATI, and nlassert.

Referenced by mapTextureStageToUV, resetLightMapVertexSetup, setupGlArraysStd, and setupLightMapPass.

bool NL3D::CDriverGL::setupVertexBuffer CVertexBuffer   VB [private]
 

Definition at line 60 of file driver_opengl_vertex.cpp.

References NL3D::IDriver::_VBDrvInfos, and NL3D::ItVBDrvInfoPtrList.

Referenced by activeVertexBuffer.

void NL3D::CDriverGL::setupViewMatrix const CMatrix &    mtx [virtual]
 

setup the view matrix (inverse of camera matrix).

NB: you must setupViewMatrix() BEFORE setupModelMatrix(), or else undefined results.

Implements NL3D::IDriver.

Definition at line 83 of file driver_opengl_matrix.cpp.

References _LightSetupDirty, _ModelViewMatrixDirty, _PZBCameraPos, _RenderSetupDirty, _TexMtx, _UserViewMtx, and _ViewMtx.

void NL3D::CDriverGL::setupViewMatrixEx const CMatrix &    mtx,
const CVector &    cameraPos
[virtual]
 

setup the view matrix (inverse of camera matrix).

Extended: give a cameraPos (mtx.Pos() is not taken into account but for getViewMatrix()), so the driver use it to remove translation from all ModelMatrixes (and lights pos). This approach improves greatly ZBuffer precision.

This is transparent to user, and getViewMatrix() return mtx (as in setupViewMatrix()).

NB: you must setupViewMatrixEx() BEFORE setupModelMatrix(), or else undefined results.

Parameters:
mtx  the same view matrix (still with correct "inversed" camera position) as if passed in setupViewMatrix()
cameraPos  position of the camera (before inversion, ie mtx.getPos()!=cameraPos ).

Implements NL3D::IDriver.

Definition at line 53 of file driver_opengl_matrix.cpp.

References _LightSetupDirty, _ModelViewMatrixDirty, _PZBCameraPos, _RenderSetupDirty, _TexMtx, _UserViewMtx, and _ViewMtx.

void NL3D::CDriverGL::setupViewport const class CViewport   viewport [virtual]
 

Set the current viewport.

Parameters:
viewport  is a viewport to setup as current viewport.

Implements NL3D::IDriver.

Definition at line 1585 of file driver_opengl.cpp.

References NLMISC::clamp, height, width, x, and y.

void NL3D::CDriverGL::showCursor bool    b [virtual]
 

show cursor if b is true, or hide it if b is false.

Implements NL3D::IDriver.

Definition at line 1679 of file driver_opengl.cpp.

bool NL3D::CDriverGL::slowUnlockVertexBufferHard   const [virtual]
 

return true if driver support VertexBufferHard, but vbHard->unlock() are slow (ATI-openGL).

Implements NL3D::IDriver.

Definition at line 385 of file driver_opengl_vertex.cpp.

References _SlowUnlockVBHard.

bool NL3D::CDriverGL::supportBlendConstantColor   const [virtual]
 

Does the driver support Blend Constant Color ??? If yes CMaterial::blendConstant* enum can be used for blend Src ord Dst factor.

If no, using these enum will have undefined results.

Implements NL3D::IDriver.

Definition at line 2216 of file driver_opengl.cpp.

References _Extensions.

bool NL3D::CDriverGL::supportEMBM   const [virtual]
 

Implements NL3D::IDriver.

Definition at line 2314 of file driver_opengl.cpp.

References _Extensions.

Referenced by initEMBM, isEMBMSupportedAtStage, and setEMBMMatrix.

bool NL3D::CDriverGL::supportPerPixelLighting bool    specular const [virtual]
 

Implements NL3D::IDriver.

Definition at line 2134 of file driver_opengl.cpp.

References _SupportPerPixelShader, and _SupportPerPixelShaderNoSpec.

Referenced by beginPPLMultiPass, and beginPPLNoSpecMultiPass.

bool NL3D::CDriverGL::supportTextureShaders   const [virtual]
 

test wether the device supports some form of texture shader. (could be limited to DX6 EMBM for example).

Implements NL3D::IDriver.

Definition at line 2066 of file driver_opengl.cpp.

References _Extensions.

Referenced by setMatrix2DForTextureOffsetAddrMode.

bool NL3D::CDriverGL::supportVertexBufferHard   const [virtual]
 

return true if driver support VertexBufferHard.

Implements NL3D::IDriver.

Definition at line 378 of file driver_opengl_vertex.cpp.

References _SupportVBHard.

Referenced by initVertexArrayRange.

bool NL3D::CDriverGL::supportVertexProgramDoubleSidedColor   const [private, virtual]
 

Check if the driver support double sided colors vertex programs.

Implements NL3D::IDriver.

Definition at line 1389 of file driver_opengl_vertex_program.cpp.

References _Extensions.

bool NL3D::CDriverGL::swapBuffers   [virtual]
 

Swap the back and front buffers.

Implements NL3D::IDriver.

Definition at line 1324 of file driver_opengl.cpp.

References _CurrentMaterial, _CurrentTexture, _CurrentTextureInfoGL, _CurrentVertexBufferHard, _DriverGLStates, _NbSetupMaterialCall, _NbSetupModelMatrixCall, _NVTextureShaderEnabled, _PrimitiveProfileIn, _PrimitiveProfileOut, _TextureUsed, _VertexBufferHardSet, activeVertexBuffer, CVertexBufferHardGLNVidia, forceActivateTexEnvColor, forceActivateTexEnvMode, GL_TEXTURE_SHADER_NV, and inlGetNumTextStages.

void NL3D::CDriverGL::swapTextureHandle ITexture   tex0,
ITexture   tex1
[virtual]
 

Special method to internally swap the Driver handle of 2 textures.

USE IT WITH CARE (eg: may have Size problems, mipmap problems, format problems ...) Actually, it is used only by CAsyncTextureManager, to manage Lods of DXTC CTextureFile. NB: internally, all textures slots are disabled.

Implements NL3D::IDriver.

Definition at line 1128 of file driver_opengl_texture.cpp.

References activateTexture, CTextureDrvInfosGL, NL3D::getTextureGl, inlGetNumTextStages, and setupTexture.

virtual TMessageBoxId NL3D::CDriverGL::systemMessageBox const char *    message,
const char *    title,
TMessageBoxType    type = okType,
TMessageBoxIcon    icon = noIcon
[virtual]
 

Output a system message box and print a message with an icon.

This method can be call even if the driver is not initialized. This method is used to return internal driver problem when string can't be displayed in the driver window. If the driver can't open a messageBox, it should not override this method and let the IDriver class manage it with the ASCII console.

Parameters:
message  This is the message to display in the message box.
title  This is the title of the message box.
type  This is the type of the message box, ie number of button and label of buttons.
icon  This is the icon of the message box should use like warning, error etc...

Reimplemented from NL3D::IDriver.

void NL3D::CDriverGL::toggleGlArraysForEXTVertexShader   [private]
 

Definition at line 674 of file driver_opengl_vertex.cpp.

References _DriverGLStates, _LastSetupGLArrayVertexProgram, _LastSetuppedVP, CVertexProgamDrvInfosGL, inlGetNumTextStages, isVertexProgramEnabled, NL3D::IDriver::IVertexProgramDrvInfos, and value.

Referenced by setupGlArrays.

void NL3D::CDriverGL::toggleGlArraysForNVVertexProgram   [private]
 

Definition at line 630 of file driver_opengl_vertex.cpp.

References _DriverGLStates, _LastSetupGLArrayVertexProgram, GLVertexAttribIndex, inlGetNumTextStages, isVertexProgramEnabled, and value.

Referenced by setupGlArrays.

bool NL3D::CDriverGL::uploadTexture ITexture   tex,
NLMISC::CRect   rect,
uint8    nNumMipMap
[virtual]
 

The texture must be created or uploadTexture do nothing.

These function can be used to upload piece by piece a texture. Use it in conjunction with setupTextureEx(..., false);

Implements NL3D::IDriver.

Definition at line 746 of file driver_opengl_texture.cpp.

References _CurrentTexture, _CurrentTextureInfoGL, _DriverGLStates, _Extensions, _ForceTextureResizePower, NLMISC::clamp, CTextureDrvInfosGL, NL3D::getGlSrcTextureComponentType, NL3D::getGlSrcTextureFormat, getGlTextureFormat, NL3D::getTextureGl, imageSize, min, nglCompressedTexImage2DARB, nglCompressedTexSubImage2DARB, nlassert, NL3D::sameDXTCFormat, and w.

bool NL3D::CDriverGL::uploadTextureCube ITexture   tex,
NLMISC::CRect   rect,
uint8    nNumMipMap,
uint8    nNumFace
[virtual]
 

Implements NL3D::IDriver.

Definition at line 873 of file driver_opengl_texture.cpp.

void NL3D::CDriverGL::verifyNVTextureShaderConfig   [private]
 


Friends And Related Function Documentation

friend class CTextureDrvInfosGL [friend]
 

Definition at line 456 of file driver_opengl.h.

Referenced by activateTexture, copyFrameBufferToTexture, getUsedTextureMemory, setupTextureEx, swapTextureHandle, and uploadTexture.

friend class CVertexArrayRangeATI [friend]
 

Definition at line 796 of file driver_opengl.h.

friend class CVertexArrayRangeNVidia [friend]
 

Definition at line 794 of file driver_opengl.h.

friend class CVertexBufferHardGLATI [friend]
 

Definition at line 797 of file driver_opengl.h.

friend class CVertexBufferHardGLNVidia [friend]
 

Definition at line 795 of file driver_opengl.h.

Referenced by fenceOnCurVBHardIfNeeded, and swapBuffers.

friend class CVertexProgamDrvInfosGL [friend]
 

Definition at line 457 of file driver_opengl.h.

Referenced by activeEXTVertexShader, activeNVVertexProgram, setupGlArraysForEXTVertexShader, and toggleGlArraysForEXTVertexShader.


Member Data Documentation

IVertexArrayRange* NL3D::CDriverGL::_AGPVertexArrayRange [private]
 

Definition at line 812 of file driver_opengl.h.

Referenced by CDriverGL, createVertexBufferHard, initVertexArrayRange, release, and resetVertexArrayRange.

uint32 NL3D::CDriverGL::_AllocatedTextureMemory [private]
 

Definition at line 829 of file driver_opengl.h.

Referenced by CDriverGL, profileAllocatedTextureMemory, and setupTextureEx.

NLMISC::CSmartPtr<CTextureCube> NL3D::CDriverGL::_CausticCubeMap [private]
 

Definition at line 903 of file driver_opengl.h.

NLMISC::CRGBA NL3D::CDriverGL::_CurrentBlendConstantColor [private]
 

Definition at line 911 of file driver_opengl.h.

Referenced by getBlendConstantColor, and setBlendConstantColor.

GLfloat NL3D::CDriverGL::_CurrentFogColor[4] [private]
 

Definition at line 551 of file driver_opengl.h.

Referenced by CDriverGL, endLightMapMultiPass, and setupFog.

bool NL3D::CDriverGL::_CurrentGlNormalize [private]
 

Definition at line 613 of file driver_opengl.h.

Referenced by CDriverGL, and enableGlNormalize.

CMaterial* NL3D::CDriverGL::_CurrentMaterial [private]
 

Definition at line 590 of file driver_opengl.h.

Referenced by beginCloudMultiPass, beginLightMapMultiPass, beginSpecularMultiPass, CDriverGL, endCloudMultiPass, setupCloudPass, setupLightMapPass, setupMaterial, setupPPLNoSpecPass, setupPPLPass, setupSpecularPass, and swapBuffers.

CMaterial::TShader NL3D::CDriverGL::_CurrentMaterialSupportedShader [private]
 

Definition at line 591 of file driver_opengl.h.

Referenced by setupMaterial.

GLenum NL3D::CDriverGL::_CurrentTexAddrMode[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 598 of file driver_opengl.h.

Referenced by CDriverGL, resetTextureShaders, and setupMaterial.

CMaterial::CTexEnv NL3D::CDriverGL::_CurrentTexEnv[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 594 of file driver_opengl.h.

Referenced by activateTexEnvColor, activateTexEnvMode, forceActivateTexEnvColor, and forceActivateTexEnvMode.

CTexEnvSpecial NL3D::CDriverGL::_CurrentTexEnvSpecial[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 596 of file driver_opengl.h.

Referenced by activateTexEnvMode, forceActivateTexEnvMode, setupCloudPass, setupLightMapPass, setupPPLNoSpecPass, setupPPLPass, and setupSpecularPass.

ITexture* NL3D::CDriverGL::_CurrentTexture[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 592 of file driver_opengl.h.

Referenced by activateTexture, copyFrameBufferToTexture, setupTextureEx, swapBuffers, and uploadTexture.

CTextureDrvInfosGL* NL3D::CDriverGL::_CurrentTextureInfoGL[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 593 of file driver_opengl.h.

Referenced by activateTexture, copyFrameBufferToTexture, setupTextureEx, swapBuffers, and uploadTexture.

IVertexArrayRange* NL3D::CDriverGL::_CurrentVertexArrayRange [private]
 

Definition at line 799 of file driver_opengl.h.

Referenced by CDriverGL.

IVertexBufferHardGL* NL3D::CDriverGL::_CurrentVertexBufferHard [private]
 

Definition at line 801 of file driver_opengl.h.

Referenced by activeVertexBuffer, CDriverGL, deleteVertexBufferHard, fenceOnCurVBHardIfNeeded, render, renderPoints, renderQuads, renderSimpleTriangles, renderTriangles, resetVertexArrayRange, and swapBuffers.

uint8 NL3D::CDriverGL::_Depth [private]
 

Definition at line 510 of file driver_opengl.h.

Referenced by getBitPerPixel.

CDriverGLStates NL3D::CDriverGL::_DriverGLStates [private]
 

Definition at line 607 of file driver_opengl.h.

Referenced by activateTexture, beginLightMapMultiPass, beginSpecularMultiPass, clearZBuffer, copyFrameBufferToTexture, disableUserTextureMatrix, endSpecularMultiPass, forceActivateTexEnvColor, forceActivateTexEnvMode, initEMBM, resetLightMapVertexSetup, resetTextureShaders, setEMBMMatrix, setMatrix2DForTextureOffsetAddrMode, setTextureEnvFunction, setupCloudPass, setupGlArraysForEXTVertexShader, setupGlArraysForNVVertexProgram, setupGlArraysStd, setupLightMapPass, setupMaterial, setupPPLNoSpecPass, setupPPLPass, setupSpecularPass, setupTextureEx, setupUserTextureMatrix, setupUVPtr, swapBuffers, toggleGlArraysForEXTVertexShader, toggleGlArraysForNVVertexProgram, and uploadTexture.

GLuint NL3D::CDriverGL::_EVSColorHandle [private]
 

Definition at line 927 of file driver_opengl.h.

Referenced by setupEXTVertexShader.

GLuint NL3D::CDriverGL::_EVSConstantHandle [private]
 

Definition at line 930 of file driver_opengl.h.

Referenced by setConstant, setConstantMatrix, and setupEXTVertexShader.

GLuint NL3D::CDriverGL::_EVSNormalHandle [private]
 

Definition at line 926 of file driver_opengl.h.

Referenced by setupEXTVertexShader.

GLuint NL3D::CDriverGL::_EVSPositionHandle [private]
 

Definition at line 925 of file driver_opengl.h.

Referenced by setupEXTVertexShader.

GLuint NL3D::CDriverGL::_EVSTexHandle[8] [private]
 

Definition at line 928 of file driver_opengl.h.

Referenced by setupEXTVertexShader.

CGlExtensions NL3D::CDriverGL::_Extensions [private]
 

Definition at line 505 of file driver_opengl.h.

Referenced by activateTexture, activeVertexProgram, beginSpecularMultiPass, checkForPerPixelLightingSupport, computeLightMapInfos, disableHardwareTextureShader, disableHardwareVertexArrayAGP, disableHardwareVertexProgram, enableVertexProgramDoubleSidedColor, forceActivateTexEnvMode, getGlTextureFormat, initEMBM, inlGetNumTextStages, isTextureAddrModeSupported, isVertexProgramEmulated, isVertexProgramSupported, resetTextureShaders, setBlendConstantColor, setConstant, setConstantMatrix, setEMBMMatrix, setupCloudPass, setupFog, setupGlArrays, setupLightMapPass, setupMaterial, setupPPLNoSpecPass, setupPPLPass, setupSpecularPass, setupTextureEx, supportBlendConstantColor, supportEMBM, supportTextureShaders, supportVertexProgramDoubleSidedColor, and uploadTexture.

bool NL3D::CDriverGL::_FogEnabled [private]
 

Definition at line 550 of file driver_opengl.h.

Referenced by CDriverGL, enableFog, endLightMapMultiPass, fogEnabled, and setupLightMapPass.

bool NL3D::CDriverGL::_ForceDXTCCompression [private]
 

Definition at line 884 of file driver_opengl.h.

Referenced by CDriverGL, forceDXTCCompression, and getGlTextureFormat.

bool NL3D::CDriverGL::_ForceNormalize [private]
 

Definition at line 513 of file driver_opengl.h.

Referenced by CDriverGL, doRefreshRenderSetup, forceNormalize, and isForceNormalize.

uint NL3D::CDriverGL::_ForceTextureResizePower [private]
 

Divisor for textureResize (power).

Definition at line 886 of file driver_opengl.h.

Referenced by CDriverGL, forceTextureResize, setupTextureEx, and uploadTexture.

bool NL3D::CDriverGL::_FullScreen [private]
 

Definition at line 464 of file driver_opengl.h.

Referenced by CDriverGL, and release.

NLMISC::CMatrix NL3D::CDriverGL::_GLProjMat [private]
 

Definition at line 525 of file driver_opengl.h.

Referenced by refreshProjMatrixFromGL, and setConstantMatrix.

bool NL3D::CDriverGL::_Initialized [private]
 

Definition at line 500 of file driver_opengl.h.

Referenced by CDriverGL, getVideocardInformation, and release.

bool NL3D::CDriverGL::_LastSetupGLArrayVertexProgram [private]
 

Definition at line 879 of file driver_opengl.h.

Referenced by setupUVPtr, toggleGlArraysForEXTVertexShader, and toggleGlArraysForNVVertexProgram.

NLMISC::CRefPtr<CVertexProgram> NL3D::CDriverGL::_LastSetuppedVP [private]
 

Definition at line 882 of file driver_opengl.h.

Referenced by activeEXTVertexShader, activeNVVertexProgram, setupGlArraysForEXTVertexShader, and toggleGlArraysForEXTVertexShader.

CVertexBufferInfo NL3D::CDriverGL::_LastVB [private]
 

LastVB for UV setup.

Definition at line 674 of file driver_opengl.h.

Referenced by activeVertexBuffer, activeVertexBufferHard, beginLightMapMultiPass, mapTextureStageToUV, resetLightMapVertexSetup, and setupLightMapPass.

bool NL3D::CDriverGL::_LastVertexSetupIsLightMap [private]
 

Definition at line 700 of file driver_opengl.h.

Referenced by CDriverGL, endLightMapMultiPass, resetLightMapVertexSetup, setupGlArrays, setupLightMapPass, and setupMaterial.

bool NL3D::CDriverGL::_LightEnable[MaxLight] [private]
 

Definition at line 556 of file driver_opengl.h.

Referenced by cleanLightSetup, and enableLight.

CMaterial::CTexEnv NL3D::CDriverGL::_LightMapLastStageEnv [private]
 

Definition at line 697 of file driver_opengl.h.

Referenced by CDriverGL, and setupLightMapPass.

std::vector<uint> NL3D::CDriverGL::_LightMapLUT [private]
 

Definition at line 694 of file driver_opengl.h.

Referenced by CDriverGL, computeLightMapInfos, and setupLightMapPass.

sint8 NL3D::CDriverGL::_LightMapUVMap[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 701 of file driver_opengl.h.

Referenced by CDriverGL, resetLightMapVertexSetup, and setupLightMapPass.

uint NL3D::CDriverGL::_LightMode[MaxLight] [private]
 

Definition at line 557 of file driver_opengl.h.

Referenced by cleanLightSetup, and setLight.

bool NL3D::CDriverGL::_LightSetupDirty [private]
 

Definition at line 516 of file driver_opengl.h.

Referenced by CDriverGL, cleanLightSetup, doRefreshRenderSetup, setLight, setupViewMatrix, and setupViewMatrixEx.

uint32 NL3D::CDriverGL::_MaterialAllTextureTouchedFlag [private]
 

Definition at line 609 of file driver_opengl.h.

Referenced by CDriverGL.

uint NL3D::CDriverGL::_MaxDriverLight [private]
 

Definition at line 555 of file driver_opengl.h.

Referenced by cleanLightSetup, enableLight, getMaxLight, and setLight.

uint32 NL3D::CDriverGL::_MaxVerticesByVBHard [private]
 

Definition at line 809 of file driver_opengl.h.

Referenced by CDriverGL, createVertexBufferHard, getMaxVerticesByVertexBufferHard, and initVertexArrayRange.

CMatrix NL3D::CDriverGL::_ModelViewMatrix [private]
 

Definition at line 547 of file driver_opengl.h.

Referenced by doRefreshRenderSetup, multiplyModelMatrix, setConstantMatrix, and setupModelMatrix.

bool NL3D::CDriverGL::_ModelViewMatrixDirty [private]
 

Definition at line 519 of file driver_opengl.h.

Referenced by CDriverGL, doRefreshRenderSetup, multiplyModelMatrix, setupModelMatrix, setupViewMatrix, and setupViewMatrixEx.

uint32 NL3D::CDriverGL::_NbSetupMaterialCall [private]
 

Definition at line 830 of file driver_opengl.h.

Referenced by profileSetupedMaterials, setupMaterial, and swapBuffers.

uint32 NL3D::CDriverGL::_NbSetupModelMatrixCall [private]
 

Definition at line 831 of file driver_opengl.h.

Referenced by profileSetupedModelMatrix, setupModelMatrix, and swapBuffers.

uint NL3D::CDriverGL::_NLightMapPass [private]
 

Definition at line 692 of file driver_opengl.h.

Referenced by beginLightMapMultiPass, computeLightMapInfos, endLightMapMultiPass, and setupLightMapPass.

uint NL3D::CDriverGL::_NLightMapPerPass [private]
 

Definition at line 691 of file driver_opengl.h.

Referenced by computeLightMapInfos, and setupLightMapPass.

uint NL3D::CDriverGL::_NLightMaps [private]
 

Temp Variables computed in beginLightMapMultiPass(). Reused in setupLightMapPass().

Definition at line 690 of file driver_opengl.h.

Referenced by computeLightMapInfos, and setupLightMapPass.

void* NL3D::CDriverGL::_NVCurrentVARPtr [private]
 

Definition at line 803 of file driver_opengl.h.

Referenced by CDriverGL.

uint32 NL3D::CDriverGL::_NVCurrentVARSize [private]
 

Definition at line 804 of file driver_opengl.h.

Referenced by CDriverGL.

bool NL3D::CDriverGL::_NVTextureShaderEnabled [private]
 

Definition at line 602 of file driver_opengl.h.

Referenced by CDriverGL, enableNVTextureShader, resetTextureShaders, and swapBuffers.

bool NL3D::CDriverGL::_OffScreen [private]
 

Definition at line 465 of file driver_opengl.h.

Referenced by CDriverGL.

float NL3D::CDriverGL::_OODeltaZ [private]
 

Definition at line 531 of file driver_opengl.h.

Referenced by setFrustum, and setupMaterial.

float NL3D::CDriverGL::_PPLExponent [private]
 

Definition at line 566 of file driver_opengl.h.

Referenced by setPerPixelLightingLight.

NLMISC::CRGBA NL3D::CDriverGL::_PPLightDiffuseColor [private]
 

Definition at line 567 of file driver_opengl.h.

Referenced by setPerPixelLightingLight, setupPPLNoSpecPass, and setupPPLPass.

NLMISC::CRGBA NL3D::CDriverGL::_PPLightSpecularColor [private]
 

Definition at line 568 of file driver_opengl.h.

Referenced by setPerPixelLightingLight, and setupPPLPass.

CPrimitiveProfile NL3D::CDriverGL::_PrimitiveProfileIn [private]
 

Definition at line 827 of file driver_opengl.h.

Referenced by profileRenderedPrimitives, render, renderPoints, renderQuads, renderSimpleTriangles, renderTriangles, and swapBuffers.

CPrimitiveProfile NL3D::CDriverGL::_PrimitiveProfileOut [private]
 

Definition at line 828 of file driver_opengl.h.

Referenced by profileRenderedPrimitives, render, renderPoints, renderQuads, renderSimpleTriangles, renderTriangles, and swapBuffers.

bool NL3D::CDriverGL::_ProjMatDirty [private]
 

Definition at line 522 of file driver_opengl.h.

Referenced by CDriverGL, refreshProjMatrixFromGL, and setFrustum.

CVector NL3D::CDriverGL::_PZBCameraPos [private]
 

Definition at line 541 of file driver_opengl.h.

Referenced by cleanLightSetup, setupModelMatrix, setupViewMatrix, and setupViewMatrixEx.

bool NL3D::CDriverGL::_RenderSetupDirty [private]
 

Definition at line 528 of file driver_opengl.h.

Referenced by CDriverGL, doRefreshRenderSetup, multiplyModelMatrix, setLight, setupModelMatrix, setupViewMatrix, and setupViewMatrixEx.

bool NL3D::CDriverGL::_SlowUnlockVBHard [private]
 

Definition at line 808 of file driver_opengl.h.

Referenced by CDriverGL, and slowUnlockVertexBufferHard.

TTexCubeVect NL3D::CDriverGL::_SpecularTextureCubes [private]
 

Definition at line 729 of file driver_opengl.h.

Referenced by getSpecularCubeMap.

bool NL3D::CDriverGL::_StageSupportEMBM[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 604 of file driver_opengl.h.

Referenced by CDriverGL, initEMBM, and isEMBMSupportedAtStage.

bool NL3D::CDriverGL::_SumTextureMemoryUsed [private]
 

Definition at line 832 of file driver_opengl.h.

Referenced by CDriverGL, and enableUsedTextureMemorySum.

bool NL3D::CDriverGL::_SupportPerPixelShader [private]
 

Definition at line 564 of file driver_opengl.h.

Referenced by checkForPerPixelLightingSupport, getSupportedShader, and supportPerPixelLighting.

bool NL3D::CDriverGL::_SupportPerPixelShaderNoSpec [private]
 

Definition at line 565 of file driver_opengl.h.

Referenced by checkForPerPixelLightingSupport, getSupportedShader, and supportPerPixelLighting.

bool NL3D::CDriverGL::_SupportVBHard [private]
 

Definition at line 807 of file driver_opengl.h.

Referenced by CDriverGL, and supportVertexBufferHard.

CMatrix NL3D::CDriverGL::_TexMtx [private]
 

Definition at line 539 of file driver_opengl.h.

Referenced by beginSpecularMultiPass, setupViewMatrix, and setupViewMatrixEx.

std::set<CTextureDrvInfosGL*> NL3D::CDriverGL::_TextureUsed [private]
 

Definition at line 833 of file driver_opengl.h.

Referenced by activateTexture, getUsedTextureMemory, and swapBuffers.

NLMISC::CMatrix NL3D::CDriverGL::_UserTexMat[IDRV_MAT_MAXTEXTURES] [private]
 

Definition at line 890 of file driver_opengl.h.

uint NL3D::CDriverGL::_UserTexMatEnabled [private]
 

Definition at line 891 of file driver_opengl.h.

Referenced by CDriverGL, disableUserTextureMatrix, and setupUserTextureMatrix.

CMatrix NL3D::CDriverGL::_UserViewMtx [private]
 

Definition at line 534 of file driver_opengl.h.

Referenced by getViewMatrix, setupViewMatrix, and setupViewMatrixEx.

CPtrSet<IVertexBufferHardGL> NL3D::CDriverGL::_VertexBufferHardSet [private]
 

Definition at line 793 of file driver_opengl.h.

Referenced by createVertexBufferHard, deleteVertexBufferHard, resetVertexArrayRange, and swapBuffers.

bool NL3D::CDriverGL::_VertexProgramEnabled [private]
 

Definition at line 877 of file driver_opengl.h.

Referenced by activeEXTVertexShader, activeNVVertexProgram, and isVertexProgramEnabled.

CMatrix NL3D::CDriverGL::_ViewMtx [private]
 

Definition at line 537 of file driver_opengl.h.

Referenced by cleanLightSetup, setupModelMatrix, setupViewMatrix, and setupViewMatrixEx.

IVertexArrayRange* NL3D::CDriverGL::_VRAMVertexArrayRange [private]
 

Definition at line 814 of file driver_opengl.h.

Referenced by CDriverGL, createVertexBufferHard, initVertexArrayRange, release, and resetVertexArrayRange.

CVector NL3D::CDriverGL::_WorldLightDirection[MaxLight] [private]
 

Definition at line 559 of file driver_opengl.h.

Referenced by cleanLightSetup, and setLight.

CVector NL3D::CDriverGL::_WorldLightPos[MaxLight] [private]
 

Definition at line 558 of file driver_opengl.h.

Referenced by cleanLightSetup, and setLight.

const uint NL3D::CDriverGL::GLMatrix [static, private]
 

Initial value:

{
        GL_MODELVIEW,
        GL_PROJECTION,
        GL_MODELVIEW_PROJECTION_NV
}

Definition at line 1292 of file driver_opengl_vertex_program.cpp.

Referenced by setConstantMatrix.

const uint NL3D::CDriverGL::GLTransform [static, private]
 

Initial value:

Definition at line 1302 of file driver_opengl_vertex_program.cpp.

Referenced by setConstantMatrix.

const uint NL3D::CDriverGL::GLType [static, private]
 

Initial value:

{
        GL_DOUBLE,      
        GL_FLOAT,       
        GL_SHORT,       
        GL_DOUBLE,      
        GL_FLOAT,       
        GL_SHORT,       
        GL_DOUBLE,      
        GL_FLOAT,       
        GL_SHORT,       
        GL_DOUBLE,      
        GL_FLOAT,       
        GL_SHORT,       
        GL_UNSIGNED_BYTE        
}

Definition at line 517 of file driver_opengl_vertex.cpp.

Referenced by setupGlArraysForEXTVertexShader, and setupGlArraysForNVVertexProgram.

const uint NL3D::CDriverGL::GLVertexAttribIndex [static, private]
 

Initial value:

{
        0,      
        2,      
        8,      
        9,      
        10,     
        11,     
        12,     
        13,     
        14,     
        15,     
        3,      
        4,      
        1,      
        6,      
        5,      
        7,      
}

Definition at line 536 of file driver_opengl_vertex.cpp.

Referenced by setupGlArraysForEXTVertexShader, setupGlArraysForNVVertexProgram, and toggleGlArraysForNVVertexProgram.

const uint NL3D::CDriverGL::NumCoordinatesType [static, private]
 

Initial value:

{
        1,      
        1,      
        1,      
        2,      
        2,      
        2,      
        3,      
        3,      
        3,      
        4,      
        4,      
        4,      
        4       
}

Definition at line 498 of file driver_opengl_vertex.cpp.

Referenced by setupGlArraysForEXTVertexShader, and setupGlArraysForNVVertexProgram.

const uint32 NL3D::CDriverGL::ReleaseVersion = 0x8 [static, private]
 

Definition at line 91 of file driver_opengl.cpp.

Referenced by getImplementationVersion.


The documentation for this class was generated from the following files: