diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/driver__opengl_8h-source.html | 992 |
1 files changed, 992 insertions, 0 deletions
diff --git a/docs/doxygen/nel/driver__opengl_8h-source.html b/docs/doxygen/nel/driver__opengl_8h-source.html new file mode 100644 index 00000000..4c5c3ec5 --- /dev/null +++ b/docs/doxygen/nel/driver__opengl_8h-source.html @@ -0,0 +1,992 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> + <TITLE>nevrax.org : docs</TITLE> + <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css"> + <link href="doxygen.css" rel="stylesheet" type="text/css"> +</HEAD> +<BODY MARGINHEIGHT="0" MARGINWIDTH="0"> + +<!-- uplinks --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A> </TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A> </TD> + </TR> +</TABLE> + +<!-- banner Nevrax --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%> + <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR> +</TABLE> + +<!-- main table --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + + <!------ Begin Box ------> + <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black> + <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF> + <TABLE cellspacing=0 cellpadding=1 border=0> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="License">License</a></td></tr> + </TABLE> + </TD></TR></TABLE></TD></TR></TABLE> + <!------ End Box ------> + + </TD> + <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + +<!-- title --> +<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td> +<A HREF="http://www.nevrax.org/docs/"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A> +</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT=""> +</td></tr></table> + + +<!-- block --> +<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD> + <TD><B>Documentation</B></TD> + <TD ALIGN=RIGHT> </td> +</tr></table> +<!-- Generated by Doxygen 1.2.14 --> +<center> +<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> <a class="qindexRef" doxygen="_cgi:http://www.nevrax.org/cgi-bin/nel-search.cgi" href="http://www.nevrax.org/cgi-bin/nel-search.cgi">Search</a> </center> +<hr><h1>driver_opengl.h</h1><a href="driver__opengl_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 +00007 <font class="comment">/* Copyright, 2000 Nevrax Ltd.</font> +00008 <font class="comment"> *</font> +00009 <font class="comment"> * This file is part of NEVRAX NEL.</font> +00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font> +00011 <font class="comment"> * it under the terms of the GNU General Public License as published by</font> +00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font> +00013 <font class="comment"> * any later version.</font> +00014 <font class="comment"></font> +00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font> +00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font> +00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font> +00018 <font class="comment"> * General Public License for more details.</font> +00019 <font class="comment"></font> +00020 <font class="comment"> * You should have received a copy of the GNU General Public License</font> +00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font> +00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font> +00023 <font class="comment"> * MA 02111-1307, USA.</font> +00024 <font class="comment"> */</font> +00025 +00026 <font class="preprocessor">#ifndef NL_OPENGL_H</font> +00027 <font class="preprocessor"></font><font class="preprocessor">#define NL_OPENGL_H</font> +00028 <font class="preprocessor"></font> +00029 +00030 <font class="preprocessor">#include "<a class="code" href="types__nl_8h.html">nel/misc/types_nl.h</a>"</font> +00031 +00032 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font> +00033 <font class="preprocessor"></font> +00034 <font class="preprocessor">#define WIN32_LEAN_AND_MEAN</font> +00035 <font class="preprocessor"></font><font class="preprocessor">#include <windows.h></font> +00036 <font class="preprocessor"># ifdef min</font> +00037 <font class="preprocessor"></font><font class="preprocessor"># undef min</font> +00038 <font class="preprocessor"></font><font class="preprocessor"># endif</font> +00039 <font class="preprocessor"></font><font class="preprocessor"># ifdef max</font> +00040 <font class="preprocessor"></font><font class="preprocessor"># undef max</font> +00041 <font class="preprocessor"></font><font class="preprocessor"># endif</font> +00042 <font class="preprocessor"></font> +00043 <font class="preprocessor">#else // NL_OS_UNIX</font> +00044 <font class="preprocessor"></font> +<a name="l00045"></a><a class="code" href="driver__opengl_8h.html#a0">00045</a> <font class="preprocessor">#define GLX_GLXEXT_PROTOTYPES</font> +00046 <font class="preprocessor"></font> +00047 <font class="preprocessor">#include <GL/glx.h></font> +00048 +00049 <font class="preprocessor">#ifdef XF86VIDMODE</font> +00050 <font class="preprocessor"></font><font class="preprocessor">#include <X11/extensions/xf86vmode.h></font> +00051 <font class="preprocessor">#endif //XF86VIDMODE</font> +00052 <font class="preprocessor"></font> +00053 <font class="preprocessor">#endif // NL_OS_UNIX</font> +00054 <font class="preprocessor"></font> +00055 <font class="preprocessor">#include <GL/gl.h></font> +00056 <font class="preprocessor">#include "<a class="code" href="driver__opengl__extension_8h.html">driver_opengl_extension.h</a>"</font> +00057 +00058 <font class="preprocessor">#include "<a class="code" href="driver_8h.html">3d/driver.h</a>"</font> +00059 <font class="preprocessor">#include "<a class="code" href="material_8h.html">3d/material.h</a>"</font> +00060 <font class="preprocessor">#include "<a class="code" href="shader_8h.html">3d/shader.h</a>"</font> +00061 <font class="preprocessor">#include "<a class="code" href="vertex__buffer_8h.html">3d/vertex_buffer.h</a>"</font> +00062 <font class="preprocessor">#include "<a class="code" href="matrix_8h.html">nel/misc/matrix.h</a>"</font> +00063 <font class="preprocessor">#include "<a class="code" href="smart__ptr_8h.html">nel/misc/smart_ptr.h</a>"</font> +00064 <font class="preprocessor">#include "<a class="code" href="rgba_8h.html">nel/misc/rgba.h</a>"</font> +00065 <font class="preprocessor">#include "<a class="code" href="event__emitter_8h.html">nel/misc/event_emitter.h</a>"</font> +00066 <font class="preprocessor">#include "<a class="code" href="bit__set_8h.html">nel/misc/bit_set.h</a>"</font> +00067 <font class="preprocessor">#include "<a class="code" href="ptr__set_8h.html">3d/ptr_set.h</a>"</font> +00068 <font class="preprocessor">#include "<a class="code" href="heap__memory_8h.html">nel/misc/heap_memory.h</a>"</font> +00069 <font class="preprocessor">#include "<a class="code" href="event__emitter__multi_8h.html">nel/misc/event_emitter_multi.h</a>"</font> +00070 <font class="preprocessor">#include "<a class="code" href="driver__opengl__states_8h.html">driver_opengl_states.h</a>"</font> +00071 <font class="preprocessor">#include "<a class="code" href="texture__cube_8h.html">3d/texture_cube.h</a>"</font> +00072 <font class="preprocessor">#include "<a class="code" href="vertex__program__parse_8h.html">3d/vertex_program_parse.h</a>"</font> +00073 +00074 +00075 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font> +00076 <font class="preprocessor"></font><font class="preprocessor">#include "<a class="code" href="win__event__emitter_8h.html">nel/misc/win_event_emitter.h</a>"</font> +00077 <font class="preprocessor">#elif defined (NL_OS_UNIX)</font> +00078 <font class="preprocessor"></font><font class="preprocessor">#include "<a class="code" href="unix__event__emitter_8h.html">unix_event_emitter.h</a>"</font> +00079 <font class="preprocessor">#endif // NL_OS_UNIX</font> +00080 <font class="preprocessor"></font> +00081 +00082 <font class="comment">// For optimisation consideration, allow 256 lightmaps at max.</font> +<a name="l00083"></a><a class="code" href="driver__opengl_8h.html#a1">00083</a> <font class="preprocessor">#define NL3D_DRV_MAX_LIGHTMAP 256</font> +00084 <font class="preprocessor"></font> +00085 +00086 <font class="keyword">namespace </font>NL3D { +00087 +00088 <font class="keyword">using</font> <a class="code" href="classNLMISC_1_1CMatrix.html">NLMISC::CMatrix</a>; +00089 <font class="keyword">using</font> <a class="code" href="classNLMISC_1_1CVector.html">NLMISC::CVector</a>; +00090 +00091 +00092 <font class="keyword">class </font>CDriverGL; +00093 <font class="keyword">class </font>IVertexArrayRange; +00094 <font class="keyword">class </font>IVertexBufferHardGL; +00095 +00096 +00097 <font class="comment">// ***************************************************************************</font> +<a name="l00098"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html">00098</a> <font class="keyword">class </font>CTextureDrvInfosGL : <font class="keyword">public</font> ITextureDrvInfos +00099 { +00100 <font class="keyword">public</font>: +00101 <font class="comment">/*</font> +00102 <font class="comment"> ANY DATA ADDED HERE MUST BE SWAPPED IN swapTextureHandle() !!</font> +00103 <font class="comment"> */</font> +00104 +00105 <font class="comment">// The GL Id.</font> +<a name="l00106"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m0">00106</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m0">ID</a>; +00107 <font class="comment">// Is the internal format of the texture is a compressed one?</font> +<a name="l00108"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m1">00108</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m1">Compressed</a>; +00109 +00110 <font class="comment">// This is the computed size of what memory this texture take.</font> +<a name="l00111"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m2">00111</a> uint32 <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m2">TextureMemory</a>; +00112 <font class="comment">// This is the owner driver.</font> +<a name="l00113"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m3">00113</a> CDriverGL *<a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m3">_Driver</a>; +00114 +00115 +00116 <font class="comment">// The current wrap modes assigned to the texture.</font> +<a name="l00117"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m4">00117</a> ITexture::TWrapMode <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m4">WrapS</a>; +<a name="l00118"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m5">00118</a> ITexture::TWrapMode <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m5">WrapT</a>; +<a name="l00119"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m6">00119</a> ITexture::TMagFilter <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m6">MagFilter</a>; +<a name="l00120"></a><a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m7">00120</a> ITexture::TMinFilter <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#m7">MinFilter</a>; +00121 +00122 <font class="comment">// The gl id is auto created here.</font> +00123 <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#a0">CTextureDrvInfosGL</a>(IDriver *drv, <a class="code" href="namespaceNL3D.html#a246">ItTexDrvInfoPtrMap</a> it, CDriverGL *drvGl); +00124 <font class="comment">// The gl id is auto deleted here.</font> +00125 <a class="code" href="classNL3D_1_1CTextureDrvInfosGL.html#a1">~CTextureDrvInfosGL</a>(); +00126 }; +00127 +00128 +00129 <font class="comment">// ***************************************************************************</font> +<a name="l00130"></a><a class="code" href="classNL3D_1_1CVBDrvInfosGL.html">00130</a> <font class="keyword">class </font>CVBDrvInfosGL : <font class="keyword">public</font> IVBDrvInfos +00131 { +00132 <font class="keyword">public</font>: +<a name="l00133"></a><a class="code" href="classNL3D_1_1CVBDrvInfosGL.html#a0">00133</a> <a class="code" href="classNL3D_1_1CVBDrvInfosGL.html#a0">CVBDrvInfosGL</a>(IDriver *drv, <a class="code" href="namespaceNL3D.html#a295">ItVBDrvInfoPtrList</a> it) : <a class="code" href="classNL3D_1_1IVBDrvInfos.html#a0">IVBDrvInfos</a>(drv, it) {} +00134 }; +00135 +00136 +00137 <font class="comment">// ***************************************************************************</font> +<a name="l00138"></a><a class="code" href="classNL3D_1_1CShaderGL.html">00138</a> <font class="keyword">class </font>CShaderGL : <font class="keyword">public</font> IShader +00139 { +00140 <font class="keyword">public</font>: +<a name="l00141"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m0">00141</a> GLenum <a class="code" href="classNL3D_1_1CShaderGL.html#m0">SrcBlend</a>; +<a name="l00142"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m1">00142</a> GLenum <a class="code" href="classNL3D_1_1CShaderGL.html#m1">DstBlend</a>; +<a name="l00143"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m2">00143</a> GLenum <a class="code" href="classNL3D_1_1CShaderGL.html#m2">ZComp</a>; +00144 +<a name="l00145"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m3">00145</a> GLfloat <a class="code" href="classNL3D_1_1CShaderGL.html#m3">Emissive</a>[4]; +<a name="l00146"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m4">00146</a> GLfloat <a class="code" href="classNL3D_1_1CShaderGL.html#m4">Ambient</a>[4]; +<a name="l00147"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m5">00147</a> GLfloat <a class="code" href="classNL3D_1_1CShaderGL.html#m5">Diffuse</a>[4]; +<a name="l00148"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m6">00148</a> GLfloat <a class="code" href="classNL3D_1_1CShaderGL.html#m6">Specular</a>[4]; +00149 <font class="comment">// For fast comp.</font> +<a name="l00150"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m7">00150</a> uint32 <a class="code" href="classNL3D_1_1CShaderGL.html#m7">PackedEmissive</a>; +<a name="l00151"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m8">00151</a> uint32 <a class="code" href="classNL3D_1_1CShaderGL.html#m8">PackedAmbient</a>; +<a name="l00152"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m9">00152</a> uint32 <a class="code" href="classNL3D_1_1CShaderGL.html#m9">PackedDiffuse</a>; +<a name="l00153"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m10">00153</a> uint32 <a class="code" href="classNL3D_1_1CShaderGL.html#m10">PackedSpecular</a>; +00154 +00155 <font class="comment">// The supported Shader type.</font> +<a name="l00156"></a><a class="code" href="classNL3D_1_1CShaderGL.html#m11">00156</a> CMaterial::TShader <a class="code" href="classNL3D_1_1CShaderGL.html#m11">SupportedShader</a>; +00157 +<a name="l00158"></a><a class="code" href="classNL3D_1_1CShaderGL.html#a0">00158</a> <a class="code" href="classNL3D_1_1CShaderGL.html#a0">CShaderGL</a>(IDriver *drv, <a class="code" href="namespaceNL3D.html#a235">ItShaderPtrList</a> it) : <a class="code" href="classNL3D_1_1IShader.html#a0">IShader</a>(drv, it) {} +00159 }; +00160 +00161 +00162 <font class="comment">// ***************************************************************************</font> +<a name="l00164"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html">00164</a> <font class="comment">class CVertexBufferInfo</font> +00165 { +00166 <font class="keyword">public</font>: +<a name="l00167"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m0">00167</a> uint16 VertexFormat; +<a name="l00168"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m1">00168</a> uint16 VertexSize; +<a name="l00169"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m2">00169</a> uint32 NumVertices; +<a name="l00170"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m3">00170</a> uint32 NumWeight; +<a name="l00171"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m4">00171</a> CVertexBuffer::TType Type[CVertexBuffer::NumValue]; +00172 +00173 <font class="comment">// NB: ptrs are invalid if VertexFormat does not support the compoennt. must test VertexFormat, not the ptr.</font> +<a name="l00174"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m5">00174</a> <font class="keywordtype">void</font> *ValuePtr[CVertexBuffer::NumValue]; +00175 +00176 +00177 <font class="comment">// ATI Special setup ?</font> +<a name="l00178"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m6">00178</a> <font class="keywordtype">bool</font> ATIVBHardMode; +00179 <font class="comment">// the handle of ATI memory</font> +<a name="l00180"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m7">00180</a> uint ATIVertexObjectId; +00181 <font class="comment">// This is the offset relative to the ATIVertexObjectId start mem.</font> +<a name="l00182"></a><a class="code" href="classNL3D_1_1CVertexBufferInfo.html#m8">00182</a> uint ATIValueOffset[CVertexBuffer::NumValue]; +00183 +00184 +00185 <font class="keywordtype">void</font> setupVertexBuffer(CVertexBuffer &vb); +00186 <font class="keywordtype">void</font> setupVertexBufferHard(IVertexBufferHardGL &vb); +00187 }; +00188 +00189 +00190 +00191 <font class="comment">// ***************************************************************************</font> +<a name="l00192"></a><a class="code" href="classNL3D_1_1CDriverGL.html">00192</a> <font class="keyword">class </font>CDriverGL : <font class="keyword">public</font> IDriver +00193 { +00194 <font class="keyword">public</font>: +00195 +00196 <font class="comment">// Some constants</font> +00197 <font class="keyword">enum</font> { <a class="code" href="classNL3D_1_1CDriverGL.html#s6s0">MaxLight</a>=8 }; +00198 +00199 <font class="comment">// Acces</font> +<a name="l00200"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a0">00200</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a0">getHwnd</a> () +00201 { +00202 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font> +00203 <font class="preprocessor"></font> <font class="keywordflow">return</font> (uint32)_hWnd; +00204 <font class="preprocessor">#else // NL_OS_WINDOWS</font> +00205 <font class="preprocessor"></font> <font class="keywordflow">return</font> 0; +00206 <font class="preprocessor">#endif // NL_OS_WINDOWS</font> +00207 <font class="preprocessor"></font> } +00208 +00209 <a class="code" href="classNL3D_1_1CDriverGL.html#a1">CDriverGL</a>(); +00210 <font class="keyword">virtual</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a2">~CDriverGL</a>(); +00211 +00212 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a3">init</a>(); +00213 +00214 <font class="keyword">virtual</font> <a class="code" href="namespaceNL3D.html#a28">ModeList</a> <a class="code" href="classNL3D_1_1CDriverGL.html#a4">enumModes</a>(); +00215 +00216 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a5">disableHardwareVertexProgram</a>(); +00217 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a6">disableHardwareVertexArrayAGP</a>(); +00218 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a7">disableHardwareTextureShader</a>(); +00219 +00220 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a8">setDisplay</a>(<font class="keywordtype">void</font>* wnd, <font class="keyword">const</font> GfxMode& mode) <font class="keywordflow">throw</font>(EBadDisplay); +00221 +<a name="l00222"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a9">00222</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font>* <a class="code" href="classNL3D_1_1CDriverGL.html#a9">getDisplay</a>() +00223 { +00224 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font> +00225 <font class="preprocessor"></font> <font class="keywordflow">return</font> (<font class="keywordtype">void</font>*)_hWnd; +00226 <font class="preprocessor">#else // NL_OS_WINDOWS</font> +00227 <font class="preprocessor"></font> <font class="keywordflow">return</font> NULL; +00228 <font class="preprocessor">#endif // NL_OS_WINDOWS</font> +00229 <font class="preprocessor"></font> } +00230 +00231 <font class="keyword">virtual</font> <a class="code" href="namespaceNL3D.html#a29">emptyProc</a> <a class="code" href="classNL3D_1_1CDriverGL.html#a10">getWindowProc</a>(); +00232 +00233 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a11">activate</a>(); +00234 +00235 <font class="keyword">virtual</font> sint <a class="code" href="classNL3D_1_1CDriverGL.html#a12">getNbTextureStages</a>() <font class="keyword">const</font>; +00236 +00237 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a13">isTextureExist</a>(<font class="keyword">const</font> ITexture&tex); +00238 +<a name="l00239"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a14">00239</a> <font class="keyword">virtual</font> <a class="code" href="classNLMISC_1_1IEventEmitter.html">NLMISC::IEventEmitter</a> *<a class="code" href="classNL3D_1_1CDriverGL.html#a14">getEventEmitter</a>() { <font class="keywordflow">return</font>&_EventEmitter; }; +00240 +00241 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a15">clear2D</a>(CRGBA rgba); +00242 +00243 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a16">clearZBuffer</a>(<font class="keywordtype">float</font> zval=1); +00244 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a17">setColorMask</a> (<font class="keywordtype">bool</font> bRed, <font class="keywordtype">bool</font> bGreen, <font class="keywordtype">bool</font> bBlue, <font class="keywordtype">bool</font> bAlpha); +00245 +00246 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a18">setupTexture</a> (ITexture& tex); +00247 +00248 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a19">setupTextureEx</a> (ITexture& tex, <font class="keywordtype">bool</font> bUpload, <font class="keywordtype">bool</font> &bAllUploaded, <font class="keywordtype">bool</font> bMustRecreateSharedTexture= <font class="keyword">false</font>); +00249 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a20">uploadTexture</a> (ITexture& tex, <a class="code" href="classNLMISC_1_1CRect.html">NLMISC::CRect</a>& rect, uint8 nNumMipMap); +00250 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a21">uploadTextureCube</a> (ITexture& tex, <a class="code" href="classNLMISC_1_1CRect.html">NLMISC::CRect</a>& rect, uint8 nNumMipMap, uint8 nNumFace); +00251 +00252 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a22">forceDXTCCompression</a>(<font class="keywordtype">bool</font> dxtcComp); +00253 +00254 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a23">forceTextureResize</a>(uint divisor); +00255 +00257 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a24">setTextureEnvFunction</a>(uint stage, CMaterial& mat); +00258 +00260 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a25">setupUserTextureMatrix</a>(uint numStages, CMaterial& mat); +00261 +00263 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a26">disableUserTextureMatrix</a>(); +00264 +00266 <font class="comment">/*static inline void setupCausticsFirstTex(const CMaterial &mat);</font> +00267 <font class="comment"></font> +00269 <font class="comment"> static inline void setupCausticsSecondTex(uint stage);*/</font> +00270 +00271 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a27">setupMaterial</a>(CMaterial& mat); +00272 +00273 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a28">setFrustum</a>(<font class="keywordtype">float</font> left, <font class="keywordtype">float</font> right, <font class="keywordtype">float</font> bottom, <font class="keywordtype">float</font> top, <font class="keywordtype">float</font> znear, <font class="keywordtype">float</font> zfar, <font class="keywordtype">bool</font> perspective = <font class="keyword">true</font>); +00274 +00275 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a29">setupViewMatrix</a>(<font class="keyword">const</font> CMatrix& mtx); +00276 +00277 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a30">setupViewMatrixEx</a>(<font class="keyword">const</font> CMatrix& mtx, <font class="keyword">const</font> CVector &cameraPos); +00278 +00279 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a31">setupModelMatrix</a>(<font class="keyword">const</font> CMatrix& mtx); +00280 +00281 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a32">multiplyModelMatrix</a>(<font class="keyword">const</font> CMatrix& mtx); +00282 +00283 <font class="keyword">virtual</font> CMatrix <a class="code" href="classNL3D_1_1CDriverGL.html#a33">getViewMatrix</a>() <font class="keyword">const</font>; +00284 +<a name="l00285"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a34">00285</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a34">forceNormalize</a>(<font class="keywordtype">bool</font> normalize) +00286 { +00287 <a class="code" href="classNL3D_1_1CDriverGL.html#o4">_ForceNormalize</a>= normalize; +00288 <font class="comment">// if ForceNormalize, must enable GLNormalize now.</font> +00289 <font class="keywordflow">if</font>(normalize) +00290 <a class="code" href="classNL3D_1_1CDriverGL.html#c24">enableGlNormalize</a>(<font class="keyword">true</font>); +00291 } +00292 +<a name="l00293"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a35">00293</a> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a35">isForceNormalize</a>()<font class="keyword"> const</font> +00294 <font class="keyword"> </font>{ +00295 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o4">_ForceNormalize</a>; +00296 } +00297 +00298 +00299 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a36">supportVertexBufferHard</a>() <font class="keyword">const</font>; +00300 +00301 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a37">slowUnlockVertexBufferHard</a>() <font class="keyword">const</font>; +00302 +00303 <font class="keyword">virtual</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#a38">getMaxVerticesByVertexBufferHard</a>() <font class="keyword">const</font>; +00304 +00305 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a39">initVertexArrayRange</a>(uint agpMem, uint vramMem); +00306 +00307 <font class="keyword">virtual</font> IVertexBufferHard *<a class="code" href="classNL3D_1_1CDriverGL.html#a40">createVertexBufferHard</a>(uint16 vertexFormat, <font class="keyword">const</font> uint8 *typeArray, uint32 numVertices, +00308 IDriver::TVBHardType vbType); +00309 +00310 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a41">deleteVertexBufferHard</a>(IVertexBufferHard *VB); +00311 +00312 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a42">activeVertexBufferHard</a>(IVertexBufferHard *VB); +00313 +00314 +00315 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a43">activeVertexBuffer</a>(CVertexBuffer& VB); +00316 +00317 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a43">activeVertexBuffer</a>(CVertexBuffer& VB, uint first, uint end); +00318 +00319 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a45">mapTextureStageToUV</a>(uint stage, uint uv); +00320 +00321 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a46">render</a>(CPrimitiveBlock& PB, CMaterial& Mat); +00322 +00323 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a47">renderTriangles</a>(CMaterial& Mat, uint32 *tri, uint32 ntris); +00324 +00325 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a48">renderSimpleTriangles</a>(uint32 *tri, uint32 ntris); +00326 +00327 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a49">renderPoints</a>(CMaterial& Mat, uint32 numPoints) ; +00328 +00329 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a50">renderQuads</a>(CMaterial& Mat, uint32 startIndex, uint32 numQuads) ; +00330 +00331 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a51">swapBuffers</a>(); +00332 +00333 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a52">profileRenderedPrimitives</a>(CPrimitiveProfile &pIn, CPrimitiveProfile &pOut); +00334 +00335 <font class="keyword">virtual</font> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a53">profileAllocatedTextureMemory</a>(); +00336 +00337 <font class="keyword">virtual</font> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a54">profileSetupedMaterials</a>() <font class="keyword">const</font>; +00338 +00339 <font class="keyword">virtual</font> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a55">profileSetupedModelMatrix</a>() <font class="keyword">const</font>; +00340 +00341 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a56">enableUsedTextureMemorySum</a> (<font class="keywordtype">bool</font> enable); +00342 +00343 uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a57">getUsedTextureMemory</a>() <font class="keyword">const</font>; +00344 +00345 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a58">release</a>(); +00346 +00347 <font class="keyword">virtual</font> <a class="code" href="classNL3D_1_1IDriver.html#s41">TMessageBoxId</a> <a class="code" href="classNL3D_1_1CDriverGL.html#a59">systemMessageBox</a> (<font class="keyword">const</font> <font class="keywordtype">char</font>* message, <font class="keyword">const</font> <font class="keywordtype">char</font>* title, <a class="code" href="classNL3D_1_1IDriver.html#s42">TMessageBoxType</a> <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>=<a class="code" href="classNL3D_1_1IDriver.html#s42s8">okType</a>, <a class="code" href="classNL3D_1_1IDriver.html#s43">TMessageBoxIcon</a> icon=<a class="code" href="classNL3D_1_1IDriver.html#s43s15">noIcon</a>); +00348 +00349 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a60">setupScissor</a> (<font class="keyword">const</font> <font class="keyword">class</font> CScissor& scissor); +00350 +00351 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a61">setupViewport</a> (<font class="keyword">const</font> <font class="keyword">class</font> CViewport& viewport); +00352 +<a name="l00353"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a62">00353</a> <font class="keyword">virtual</font> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#a62">getImplementationVersion</a> ()<font class="keyword"> const</font> +00354 <font class="keyword"> </font>{ +00355 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CDriverGL.html#r0">ReleaseVersion</a>; +00356 } +00357 +<a name="l00358"></a><a class="code" href="classNL3D_1_1CDriverGL.html#a63">00358</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="classNL3D_1_1CDriverGL.html#a63">getDriverInformation</a> () +00359 { +00360 <font class="keywordflow">return</font> <font class="stringliteral">"Opengl 1.2 NeL Driver"</font>; +00361 } +00362 +00363 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="classNL3D_1_1CDriverGL.html#a64">getVideocardInformation</a> (); +00364 +00365 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a65">isActive</a> (); +00366 +00367 <font class="keyword">virtual</font> uint8 <a class="code" href="classNL3D_1_1CDriverGL.html#a66">getBitPerPixel</a> (); +00368 +00369 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a67">showCursor</a> (<font class="keywordtype">bool</font> b); +00370 +00371 <font class="comment">// between 0.0 and 1.0</font> +00372 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a68">setMousePos</a>(<font class="keywordtype">float</font> <a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>, <font class="keywordtype">float</font> <a class="code" href="driver__opengl__extension__def_8h.html#a365">y</a>); +00373 +00374 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a69">setCapture</a> (<font class="keywordtype">bool</font> b); +00375 +00376 <font class="keyword">virtual</font> <a class="code" href="structNLMISC_1_1IMouseDevice.html">NLMISC::IMouseDevice</a> *<a class="code" href="classNL3D_1_1CDriverGL.html#a70">enableLowLevelMouse</a>(<font class="keywordtype">bool</font> enable); +00377 +00378 <font class="keyword">virtual</font> <a class="code" href="structNLMISC_1_1IKeyboardDevice.html">NLMISC::IKeyboardDevice</a> *<a class="code" href="classNL3D_1_1CDriverGL.html#a71">enableLowLevelKeyboard</a>(<font class="keywordtype">bool</font> enable); +00379 +00380 <font class="keyword">virtual</font> <a class="code" href="structNLMISC_1_1IInputDeviceManager.html">NLMISC::IInputDeviceManager</a> *<a class="code" href="classNL3D_1_1CDriverGL.html#a72">getLowLevelInputDeviceManager</a>(); +00381 +00382 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a73">getWindowSize</a> (uint32 &<a class="code" href="driver__opengl__extension__def_8h.html#a389">width</a>, uint32 &<a class="code" href="driver__opengl__extension__def_8h.html#a390">height</a>); +00383 +00384 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a74">getBuffer</a> (CBitmap &bitmap); +00385 +00386 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a75">getZBuffer</a> (std::vector<float> &zbuffer); +00387 +00388 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a76">getBufferPart</a> (CBitmap &bitmap, <a class="code" href="classNLMISC_1_1CRect.html">NLMISC::CRect</a> &rect); +00389 +00390 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a77">getZBufferPart</a> (std::vector<float> &zbuffer, <a class="code" href="classNLMISC_1_1CRect.html">NLMISC::CRect</a> &rect); +00391 +00392 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a78">copyFrameBufferToTexture</a>(ITexture *tex, +00393 uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a387">level</a>, +00394 uint32 offsetx, +00395 uint32 offsety, +00396 uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>, +00397 uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a365">y</a>, +00398 uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a389">width</a>, +00399 uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a390">height</a> +00400 ); +00401 +00402 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a79">fillBuffer</a> (CBitmap &bitmap); +00403 +00404 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a80">setPolygonMode</a> (<a class="code" href="classNL3D_1_1IDriver.html#s44">TPolygonMode</a> mode); +00405 +00406 <font class="keyword">virtual</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#a81">getMaxLight</a> () <font class="keyword">const</font>; +00407 +00408 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a82">setLight</a> (uint8 <a class="code" href="driver__opengl__extension__def_8h.html#a410">num</a>, <font class="keyword">const</font> CLight& light); +00409 +00410 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a83">enableLight</a> (uint8 <a class="code" href="driver__opengl__extension__def_8h.html#a410">num</a>, <font class="keywordtype">bool</font> enable=<font class="keyword">true</font>); +00411 +00412 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a84">setPerPixelLightingLight</a>(CRGBA diffuse, CRGBA specular, <font class="keywordtype">float</font> shininess); +00413 +00414 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a85">setAmbientColor</a> (CRGBA color); +00415 +00417 <font class="comment">// @{</font> +00418 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z399_0">fogEnabled</a>(); +00419 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z399_1">enableFog</a>(<font class="keywordtype">bool</font> enable); +00421 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z399_2">setupFog</a>(<font class="keywordtype">float</font> start, <font class="keywordtype">float</font> end, CRGBA color); +00422 <font class="comment">// @}</font> +00423 +00425 <font class="comment">// @{</font> +00426 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z400_0">supportTextureShaders</a>() <font class="keyword">const</font>; +00427 +00428 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z400_1">isTextureAddrModeSupported</a>(CMaterial::TTexAddressingMode mode) <font class="keyword">const</font>; +00429 +00430 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z400_2">setMatrix2DForTextureOffsetAddrMode</a>(<font class="keyword">const</font> uint stage, <font class="keyword">const</font> <font class="keywordtype">float</font> mat[4]); +00431 <font class="comment">// @}</font> +00432 +00434 <font class="comment">// @{</font> +00435 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z401_0">supportEMBM</a>() <font class="keyword">const</font>; +00436 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z401_1">isEMBMSupportedAtStage</a>(uint stage) <font class="keyword">const</font>; +00437 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z401_2">setEMBMMatrix</a>(<font class="keyword">const</font> uint stage, <font class="keyword">const</font> <font class="keywordtype">float</font> mat[4]); +00438 <font class="comment">// @}</font> +00439 +00440 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a86">supportPerPixelLighting</a>(<font class="keywordtype">bool</font> specular) <font class="keyword">const</font>; +00441 +00442 +00444 <font class="comment">// @{</font> +00445 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z402_0">supportBlendConstantColor</a>() <font class="keyword">const</font>; +00446 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z402_1">setBlendConstantColor</a>(<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> col); +00447 <font class="keyword">virtual</font> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z402_2">getBlendConstantColor</a>() <font class="keyword">const</font>; +00448 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z402_3">setMonitorColorProperties</a> (<font class="keyword">const</font> CMonitorColorProperties &properties); +00449 <font class="comment">// @}</font> +00450 +00451 +00452 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#a87">swapTextureHandle</a>(ITexture &tex0, ITexture &tex1); +00453 +00454 +00455 <font class="keyword">private</font>: +<a name="l00456"></a><a class="code" href="classNL3D_1_1CDriverGL.html#l0">00456</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#l0">CTextureDrvInfosGL</a>; +<a name="l00457"></a><a class="code" href="classNL3D_1_1CDriverGL.html#l1">00457</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#l1">CVertexProgamDrvInfosGL</a>; +00458 +00459 +00460 <font class="keyword">private</font>: +00461 <font class="comment">// Version of the driver. Not the interface version!! Increment when implementation of the driver change.</font> +00462 <font class="keyword">static</font> <font class="keyword">const</font> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#r0">ReleaseVersion</a>; +00463 +<a name="l00464"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o0">00464</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o0">_FullScreen</a>; +<a name="l00465"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o1">00465</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o1">_OffScreen</a>; +00466 +00467 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font> +00468 <font class="preprocessor"></font> +00469 <font class="keyword">friend</font> <font class="keyword">static</font> <font class="keywordtype">void</font> GlWndProc(<a class="code" href="classNL3D_1_1CDriverGL.html#a1">CDriverGL</a> *driver, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); +00470 +00471 HWND _hWnd; +00472 sint32 _WindowWidth, _WindowHeight; +00473 HDC _hDC; +00474 PIXELFORMATDESCRIPTOR _pfd; +00475 HGLRC _hRC; +00476 <font class="keyword">static</font> uint _Registered; +00477 DEVMODE _OldScreenMode; +00478 <a class="code" href="classNLMISC_1_1CEventEmitterMulti.html">NLMISC::CEventEmitterMulti</a> _EventEmitter; <font class="comment">// this can contains a win emitter and eventually a direct input emitter </font> +00479 <font class="keywordtype">bool</font> _DestroyWindow; +00480 +00481 <font class="comment">// Off-screen rendering in Dib section</font> +00482 HPBUFFERARB _PBuffer; +00483 +00484 <font class="preprocessor">#elif defined (NL_OS_UNIX)</font> +00485 <font class="preprocessor"></font> +00486 Display *dpy; +00487 GLXContext ctx; +00488 Window win; +00489 Cursor cursor; +00490 NLMISC::CUnixEventEmitter _EventEmitter; +00491 +00492 <font class="preprocessor">#ifdef XF86VIDMODE</font> +00493 <font class="preprocessor"></font> <font class="keywordtype">int</font> _OldDotClock; <font class="comment">// old dotclock</font> +00494 XF86VidModeModeLine _OldScreenMode; <font class="comment">// old modeline</font> +00495 <font class="keywordtype">int</font> _OldX, _OldY; <font class="comment">//Viewport settings</font> +00496 <font class="preprocessor">#endif //XF86VIDMODE</font> +00497 <font class="preprocessor"></font> +00498 <font class="preprocessor">#endif // NL_OS_UNIX</font> +00499 <font class="preprocessor"></font> +<a name="l00500"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o2">00500</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o2">_Initialized</a>; +00501 +00503 <font class="comment">// @{</font> +00504 <font class="comment">// OpenGL extensions Extensions.</font> +<a name="l00505"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z403_0">00505</a> CGlExtensions <a class="code" href="classNL3D_1_1CDriverGL.html#z403_0">_Extensions</a>; +00506 <font class="comment">// @}</font> +00507 +00508 +00509 <font class="comment">// Depth of the driver in Bit Per Pixel</font> +<a name="l00510"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o3">00510</a> uint8 <a class="code" href="classNL3D_1_1CDriverGL.html#o3">_Depth</a>; +00511 +00512 <font class="comment">// The forceNormalize() state.</font> +<a name="l00513"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o4">00513</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o4">_ForceNormalize</a>; +00514 +00515 <font class="comment">// To know if light setup has been changed from last render() ( any call to setupViewMatrix() or setLight() ).</font> +<a name="l00516"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o5">00516</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o5">_LightSetupDirty</a>; +00517 +00518 <font class="comment">// To know if the modelview matrix setup has been changed from last render() (any call to setupViewMatrix() / setupModelMatrix() ).</font> +<a name="l00519"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o6">00519</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o6">_ModelViewMatrixDirty</a>; +00520 +00521 <font class="comment">// To know if the projection matrix has been changed</font> +<a name="l00522"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o7">00522</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o7">_ProjMatDirty</a>; +00523 +00524 <font class="comment">// Mirror the gl projection matrix when _ProjMatDirty = false </font> +<a name="l00525"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o8">00525</a> <a class="code" href="classNLMISC_1_1CMatrix.html">NLMISC::CMatrix</a> <a class="code" href="classNL3D_1_1CDriverGL.html#o8">_GLProjMat</a>; +00526 +00527 <font class="comment">// Ored of _LightSetupDirty and _ModelViewMatrixDirty</font> +<a name="l00528"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o9">00528</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o9">_RenderSetupDirty</a>; +00529 +00530 <font class="comment">// Backup znear and zfar</font> +<a name="l00531"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o10">00531</a> <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o10">_OODeltaZ</a>; +00532 +00533 <font class="comment">// Current View matrix, in NEL basis. This is the parameter passed in setupViewMatrix*().</font> +<a name="l00534"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o11">00534</a> CMatrix <a class="code" href="classNL3D_1_1CDriverGL.html#o11">_UserViewMtx</a>; +00535 <font class="comment">// Current (OpenGL basis) View matrix.</font> +00536 <font class="comment">// NB: if setuped with setupViewMatrixEx(), _ViewMtx.Pos()==(0,0,0)</font> +<a name="l00537"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o12">00537</a> CMatrix <a class="code" href="classNL3D_1_1CDriverGL.html#o12">_ViewMtx</a>; +00538 <font class="comment">// Matrix used for specular</font> +<a name="l00539"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o13">00539</a> CMatrix <a class="code" href="classNL3D_1_1CDriverGL.html#o13">_TexMtx</a>; +00540 <font class="comment">// Precision ZBuffer: The Current cameraPosition, to remove from each model Position.</font> +<a name="l00541"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o14">00541</a> CVector <a class="code" href="classNL3D_1_1CDriverGL.html#o14">_PZBCameraPos</a>; +00542 +00543 +00544 <font class="comment">// Current computed (OpenGL basis) ModelView matrix.</font> +00545 <font class="comment">// NB: This matrix have already substracted the _PZBCameraPos</font> +00546 <font class="comment">// Hence this matrix represent the Exact eye-space basis (only _ViewMtx is a bit tricky).</font> +<a name="l00547"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o15">00547</a> CMatrix <a class="code" href="classNL3D_1_1CDriverGL.html#o15">_ModelViewMatrix</a>; +00548 +00549 <font class="comment">// Fog.</font> +<a name="l00550"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o16">00550</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o16">_FogEnabled</a>; +<a name="l00551"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o17">00551</a> GLfloat <a class="code" href="classNL3D_1_1CDriverGL.html#o17">_CurrentFogColor</a>[4]; +00552 +00553 +00554 <font class="comment">// Num lights return by GL_MAX_LIGHTS</font> +<a name="l00555"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o18">00555</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#o18">_MaxDriverLight</a>; +<a name="l00556"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o19">00556</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o19">_LightEnable</a>[<a class="code" href="classNL3D_1_1CDriverGL.html#s6s0">MaxLight</a>]; <font class="comment">// Light enable.</font> +<a name="l00557"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o20">00557</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#o20">_LightMode</a>[<a class="code" href="classNL3D_1_1CDriverGL.html#s6s0">MaxLight</a>]; <font class="comment">// Light mode.</font> +<a name="l00558"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o21">00558</a> CVector <a class="code" href="classNL3D_1_1CDriverGL.html#o21">_WorldLightPos</a>[<a class="code" href="classNL3D_1_1CDriverGL.html#s6s0">MaxLight</a>]; <font class="comment">// World position of the lights.</font> +<a name="l00559"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o22">00559</a> CVector <a class="code" href="classNL3D_1_1CDriverGL.html#o22">_WorldLightDirection</a>[<a class="code" href="classNL3D_1_1CDriverGL.html#s6s0">MaxLight</a>]; <font class="comment">// World direction of the lights.</font> +00560 +00561 <font class="comment">//\name description of the per pixel light</font> +00562 <font class="comment">// @{</font> +00563 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_0">checkForPerPixelLightingSupport</a>(); +<a name="l00564"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z404_1">00564</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_1">_SupportPerPixelShader</a>; +<a name="l00565"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z404_2">00565</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_2">_SupportPerPixelShaderNoSpec</a>; +<a name="l00566"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z404_3">00566</a> <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_3">_PPLExponent</a>; +<a name="l00567"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z404_4">00567</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_4">_PPLightDiffuseColor</a>; +<a name="l00568"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z404_5">00568</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z404_5">_PPLightSpecularColor</a>; +00569 <font class="comment">// @}</font> +00570 +00571 +00572 +00574 <font class="comment">// @{</font> +00575 +00576 <font class="comment">// Special Texture environnements.</font> +<a name="l00577"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_0">00577</a> <font class="keyword">enum</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0">CTexEnvSpecial</a> { +00578 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u0">TexEnvSpecialDisabled</a>= 0, +00579 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u1">TexEnvSpecialLightMap</a>, +00580 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u2">TexEnvSpecialSpecularStage0</a>, +00581 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u3">TexEnvSpecialSpecularStage1</a>, +00582 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u4">TexEnvSpecialSpecularStage1NoText</a>, +00583 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u5">TexEnvSpecialPPLStage0</a>, +00584 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u6">TexEnvSpecialPPLStage2</a>, +00585 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u7">TexEnvSpecialCloudStage0</a>, +00586 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0u8">TexEnvSpecialCloudStage1</a>, +00587 }; +00588 +00589 <font class="comment">// NB: CRefPtr are not used for mem/spped optimisation. setupMaterial() and setupTexture() reset those states.</font> +<a name="l00590"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_2">00590</a> CMaterial* <a class="code" href="classNL3D_1_1CDriverGL.html#z405_2">_CurrentMaterial</a>; +<a name="l00591"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_3">00591</a> CMaterial::TShader <a class="code" href="classNL3D_1_1CDriverGL.html#z405_3">_CurrentMaterialSupportedShader</a>; +<a name="l00592"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_4">00592</a> ITexture* <a class="code" href="classNL3D_1_1CDriverGL.html#z405_4">_CurrentTexture</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +<a name="l00593"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_5">00593</a> <a class="code" href="classNL3D_1_1CDriverGL.html#l0">CTextureDrvInfosGL</a>* <a class="code" href="classNL3D_1_1CDriverGL.html#z405_5">_CurrentTextureInfoGL</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +<a name="l00594"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_6">00594</a> CMaterial::CTexEnv <a class="code" href="classNL3D_1_1CDriverGL.html#z405_6">_CurrentTexEnv</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +00595 <font class="comment">// Special Texture Environnement.</font> +<a name="l00596"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_7">00596</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_0">CTexEnvSpecial</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_7">_CurrentTexEnvSpecial</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +00597 <font class="comment">// Texture addressing mode</font> +<a name="l00598"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_8">00598</a> GLenum <a class="code" href="classNL3D_1_1CDriverGL.html#z405_8">_CurrentTexAddrMode</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +00599 <font class="comment">// Reset texture shaders to their initial state if they are used</font> +00600 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_1">resetTextureShaders</a>(); +00601 <font class="comment">// activation of texture shaders</font> +<a name="l00602"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_9">00602</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_9">_NVTextureShaderEnabled</a>; +00603 <font class="comment">// Which stages support EMBM</font> +<a name="l00604"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_10">00604</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z405_10">_StageSupportEMBM</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +00605 +00606 <font class="comment">// Prec settings for material.</font> +<a name="l00607"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_11">00607</a> CDriverGLStates <a class="code" href="classNL3D_1_1CDriverGL.html#z405_11">_DriverGLStates</a>; +00608 <font class="comment">// Optim: To not test change in Materials states if just texture has changed. Very usefull for landscape.</font> +<a name="l00609"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z405_12">00609</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_12">_MaterialAllTextureTouchedFlag</a>; +00610 +00611 <font class="comment">// @}</font> +00612 +<a name="l00613"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o23">00613</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o23">_CurrentGlNormalize</a>; +00614 +00615 <font class="keyword">private</font>: +00616 <font class="comment">// Get the proj matrix setupped in GL</font> +00617 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c0">refreshProjMatrixFromGL</a>(); +00618 +00619 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c1">setupVertexBuffer</a>(CVertexBuffer& VB); +00620 <font class="comment">// Activate Texture Environnement. Do it with caching.</font> +00621 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c2">activateTexture</a>(uint stage, ITexture *tex); +00622 <font class="comment">// NB: this test _CurrentTexEnv[] and _CurrentTexEnvSpecial[].</font> +00623 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c3">activateTexEnvMode</a>(uint stage, <font class="keyword">const</font> CMaterial::CTexEnv &env); +00624 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c4">activateTexEnvColor</a>(uint stage, <font class="keyword">const</font> CMaterial::CTexEnv &env); +00625 <font class="comment">// Force Activate Texture Environnement. no caching here. TexEnvSpecial is disabled.</font> +00626 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c5">forceActivateTexEnvMode</a>(uint stage, <font class="keyword">const</font> CMaterial::CTexEnv &env); +00627 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c4">activateTexEnvColor</a>(uint stage, <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> col); +<a name="l00628"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c7">00628</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c7">forceActivateTexEnvColor</a>(uint stage, <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> col) +00629 { +00630 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">float</font> OO255= 1.0f/255; +00631 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_6">_CurrentTexEnv</a>[stage].ConstantColor= col; +00632 <font class="comment">// Setup the gl cte color.</font> +00633 <a class="code" href="classNL3D_1_1CDriverGL.html#z405_11">_DriverGLStates</a>.activeTextureARB(stage); +00634 GLfloat glcol[4]; +00635 glcol[0]= col.<a class="code" href="classNLMISC_1_1CRGBA.html#m0">R</a>*OO255; +00636 glcol[1]= col.<a class="code" href="classNLMISC_1_1CRGBA.html#m1">G</a>*OO255; +00637 glcol[2]= col.<a class="code" href="classNLMISC_1_1CRGBA.html#m2">B</a>*OO255; +00638 glcol[3]= col.<a class="code" href="classNLMISC_1_1CRGBA.html#m3">A</a>*OO255; +00639 glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, glcol); +00640 } +<a name="l00641"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c8">00641</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c7">forceActivateTexEnvColor</a>(uint stage, <font class="keyword">const</font> CMaterial::CTexEnv &env) +00642 { +00643 <a class="code" href="classNL3D_1_1CDriverGL.html#c7">forceActivateTexEnvColor</a>(stage, env.ConstantColor); +00644 } +00645 +00646 +00648 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c9">enableNVTextureShader</a>(<font class="keywordtype">bool</font> enabled); +00649 <font class="comment">// check nv texture shader consistency</font> +00650 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c10">verifyNVTextureShaderConfig</a>(); +00651 +00652 <font class="comment">// Called by doRefreshRenderSetup(). set _LightSetupDirty to false</font> +00653 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c11">cleanLightSetup</a> (); +00654 +00655 <font class="comment">// According to extensions, retrieve GL tex format of the texture.</font> +00656 GLint <a class="code" href="classNL3D_1_1CDriverGL.html#c12">getGlTextureFormat</a>(ITexture& tex, <font class="keywordtype">bool</font> &compressed); +00657 +00658 +00659 <font class="comment">// Clip the wanted rectangle with window. return true if rect is not NULL.</font> +00660 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c13">clipRect</a>(<a class="code" href="classNLMISC_1_1CRect.html">NLMISC::CRect</a> &rect); +00661 +00662 +00664 +00666 <font class="comment">// @{</font> +00668 <font class="comment"> sint beginMultiPass();</font> +00670 <font class="comment"> void setupPass(uint pass);</font> +00672 <font class="comment"> void endMultiPass();</font> +<a name="l00674"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z406_3">00674</a> <font class="comment"> CVertexBufferInfo _LastVB;</font> +00675 <font class="comment">// @}</font> +00676 +00677 +00679 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c14">setupUVPtr</a>(uint stage, CVertexBufferInfo &VB, uint uvId); +00680 +00681 +00683 <font class="comment">// @{</font> +00684 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_0">computeLightMapInfos</a>(<font class="keyword">const</font> CMaterial &mat); +00685 sint <a class="code" href="classNL3D_1_1CDriverGL.html#z407_1">beginLightMapMultiPass</a>(); +00686 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_2">setupLightMapPass</a>(uint pass); +00687 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_3">endLightMapMultiPass</a>(); +00688 +<a name="l00690"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_5">00690</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#z407_5">_NLightMaps</a>; +<a name="l00691"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_6">00691</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#z407_6">_NLightMapPerPass</a>; +<a name="l00692"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_7">00692</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#z407_7">_NLightMapPass</a>; +00693 <font class="comment">// This array is the LUT from lmapId in [0, _NLightMaps[, to original lightmap id in material.</font> +<a name="l00694"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_8">00694</a> std::vector<uint> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_8">_LightMapLUT</a>; +00695 +00696 <font class="comment">// last stage env.</font> +<a name="l00697"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_9">00697</a> CMaterial::CTexEnv <a class="code" href="classNL3D_1_1CDriverGL.html#z407_9">_LightMapLastStageEnv</a>; +00698 +00699 <font class="comment">// Caching</font> +<a name="l00700"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_10">00700</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_10">_LastVertexSetupIsLightMap</a>; +<a name="l00701"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z407_11">00701</a> sint8 <a class="code" href="classNL3D_1_1CDriverGL.html#z407_11">_LightMapUVMap</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +00702 +00703 <font class="comment">// restore std vertex Setup.</font> +00704 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z407_4">resetLightMapVertexSetup</a>(); +00705 +00706 <font class="comment">// @}</font> +00707 +00709 <font class="comment">// @{</font> +00710 sint <a class="code" href="classNL3D_1_1CDriverGL.html#z408_0">beginSpecularMultiPass</a>(); +00711 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z408_1">setupSpecularPass</a>(uint pass); +00712 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z408_2">endSpecularMultiPass</a>(); +00713 <font class="comment">// @}</font> +00714 +00716 <font class="comment">// @{</font> +00717 <font class="comment">// per pixel lighting with specular</font> +00718 sint <a class="code" href="classNL3D_1_1CDriverGL.html#z409_2">beginPPLMultiPass</a>(); +00719 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_3">setupPPLPass</a>(uint pass); +00720 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_4">endPPLMultiPass</a>(); +00721 +00722 <font class="comment">// per pixel lighting, no specular</font> +00723 sint <a class="code" href="classNL3D_1_1CDriverGL.html#z409_5">beginPPLNoSpecMultiPass</a>(); +00724 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_6">setupPPLNoSpecPass</a>(uint pass); +00725 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_7">endPPLNoSpecMultiPass</a>(); +00726 +<a name="l00727"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z409_0">00727</a> <font class="keyword">typedef</font> <a class="code" href="classNLMISC_1_1CSmartPtr.html">NLMISC::CSmartPtr<CTextureCube></a> <a class="code" href="classNLMISC_1_1CSmartPtr.html">TSPTextureCube</a>; +<a name="l00728"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z409_1">00728</a> <font class="keyword">typedef</font> std::vector<TSPTextureCube> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_1">TTexCubeVect</a>; +<a name="l00729"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z409_10">00729</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_1">TTexCubeVect</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_10">_SpecularTextureCubes</a>; <font class="comment">// the cube maps used to compute the specular lighting.</font> +00730 +00731 +00733 CTextureCube *<a class="code" href="classNL3D_1_1CDriverGL.html#z409_8">getSpecularCubeMap</a>(uint exp); +00734 +00735 <font class="comment">// get (and if necessary, build) the cube map used for diffuse lighting</font> +<a name="l00736"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z409_9">00736</a> CTextureCube *<a class="code" href="classNL3D_1_1CDriverGL.html#z409_9">getDiffuseCubeMap</a>() { <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z409_8">getSpecularCubeMap</a>(1); } +00737 +00738 +00739 +00740 <font class="comment">// @}</font> +00741 +00743 <font class="comment">// @{</font> +00744 <font class="comment">/*sint beginCausticsMultiPass(const CMaterial &mat);</font> +00745 <font class="comment"> void setupCausticsPass(const CMaterial &mat, uint pass);</font> +00746 <font class="comment"> void endCausticsMultiPass(const CMaterial &mat);*/</font> +00747 <font class="comment">// @}</font> +00748 +00750 sint <a class="code" href="classNL3D_1_1CDriverGL.html#c15">beginCloudMultiPass</a> (); +00751 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c16">setupCloudPass</a> (uint pass); +00752 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c17">endCloudMultiPass</a> (); +00753 <font class="comment">// @}</font> +00754 +00755 +00757 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c18">setupGlArrays</a>(CVertexBufferInfo &vb); +00758 +00760 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c19">setupGlArraysStd</a>(CVertexBufferInfo &vb); +00761 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c20">setupGlArraysForNVVertexProgram</a>(CVertexBufferInfo &vb); +00762 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c21">setupGlArraysForEXTVertexShader</a>(CVertexBufferInfo &vb); +00763 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c22">toggleGlArraysForNVVertexProgram</a>(); +00764 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c23">toggleGlArraysForEXTVertexShader</a>(); +00765 +<a name="l00767"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c24">00767</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c24">enableGlNormalize</a>(<font class="keywordtype">bool</font> normalize) +00768 { +00769 <font class="keywordflow">if</font>(<a class="code" href="classNL3D_1_1CDriverGL.html#o23">_CurrentGlNormalize</a>!=normalize) +00770 { +00771 <a class="code" href="classNL3D_1_1CDriverGL.html#o23">_CurrentGlNormalize</a>= normalize; +00772 <font class="keywordflow">if</font>(normalize) +00773 glEnable(GL_NORMALIZE); +00774 <font class="keywordflow">else</font> +00775 glDisable(GL_NORMALIZE); +00776 } +00777 } +00778 +00779 <font class="comment">// refresh matrixes and lights.</font> +<a name="l00780"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c25">00780</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c25">refreshRenderSetup</a>() +00781 { +00782 <font class="comment">// check if something to change.</font> +00783 <font class="keywordflow">if</font>(_RenderSetupDirty) +00784 { +00785 <a class="code" href="classNL3D_1_1CDriverGL.html#c26">doRefreshRenderSetup</a>(); +00786 } +00787 } +00788 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c26">doRefreshRenderSetup</a>(); +00789 +00790 +00792 <font class="comment">// @{</font> +<a name="l00793"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_2">00793</a> CPtrSet<IVertexBufferHardGL> <a class="code" href="classNL3D_1_1CDriverGL.html#z411_2">_VertexBufferHardSet</a>; +<a name="l00794"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_12">00794</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#z411_12">CVertexArrayRangeNVidia</a>; +<a name="l00795"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_13">00795</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#z411_13">CVertexBufferHardGLNVidia</a>; +<a name="l00796"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_14">00796</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#z411_14">CVertexArrayRangeATI</a>; +<a name="l00797"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_15">00797</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classNL3D_1_1CDriverGL.html#z411_15">CVertexBufferHardGLATI</a>; +00798 <font class="comment">// The VertexArrayRange activated.</font> +<a name="l00799"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_3">00799</a> IVertexArrayRange *<a class="code" href="classNL3D_1_1CDriverGL.html#z411_3">_CurrentVertexArrayRange</a>; +00800 <font class="comment">// The VertexBufferHardGL activated.</font> +<a name="l00801"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_4">00801</a> IVertexBufferHardGL *<a class="code" href="classNL3D_1_1CDriverGL.html#z411_4">_CurrentVertexBufferHard</a>; +00802 <font class="comment">// current setup passed to nglVertexArrayRangeNV()</font> +<a name="l00803"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_5">00803</a> <font class="keywordtype">void</font> *<a class="code" href="classNL3D_1_1CDriverGL.html#z411_5">_NVCurrentVARPtr</a>; +<a name="l00804"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_6">00804</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z411_6">_NVCurrentVARSize</a>; +00805 +00806 <font class="comment">// Info got from ATI or NVidia extension.</font> +<a name="l00807"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_7">00807</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z411_7">_SupportVBHard</a>; +<a name="l00808"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_8">00808</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z411_8">_SlowUnlockVBHard</a>; +<a name="l00809"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_9">00809</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z411_9">_MaxVerticesByVBHard</a>; +00810 +00811 <font class="comment">// The AGP VertexArrayRange.</font> +<a name="l00812"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_10">00812</a> IVertexArrayRange *<a class="code" href="classNL3D_1_1CDriverGL.html#z411_10">_AGPVertexArrayRange</a>; +00813 <font class="comment">// The VRAM VertexArrayRange.</font> +<a name="l00814"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z411_11">00814</a> IVertexArrayRange *<a class="code" href="classNL3D_1_1CDriverGL.html#z411_11">_VRAMVertexArrayRange</a>; +00815 +00816 +00817 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z411_0">resetVertexArrayRange</a>(); +00818 +00819 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z411_1">fenceOnCurVBHardIfNeeded</a>(IVertexBufferHardGL *newVBHard); +00820 +00821 +00822 <font class="comment">// @}</font> +00823 +00824 +00826 <font class="comment">// @{</font> +<a name="l00827"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_1">00827</a> CPrimitiveProfile <a class="code" href="classNL3D_1_1CDriverGL.html#z412_1">_PrimitiveProfileIn</a>; +<a name="l00828"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_2">00828</a> CPrimitiveProfile <a class="code" href="classNL3D_1_1CDriverGL.html#z412_2">_PrimitiveProfileOut</a>; +<a name="l00829"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_3">00829</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z412_3">_AllocatedTextureMemory</a>; +<a name="l00830"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_4">00830</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z412_4">_NbSetupMaterialCall</a>; +<a name="l00831"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_5">00831</a> uint32 <a class="code" href="classNL3D_1_1CDriverGL.html#z412_5">_NbSetupModelMatrixCall</a>; +<a name="l00832"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_6">00832</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z412_6">_SumTextureMemoryUsed</a>; +<a name="l00833"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z412_7">00833</a> std::set<CTextureDrvInfosGL*> <a class="code" href="classNL3D_1_1CDriverGL.html#z412_7">_TextureUsed</a>; +00834 uint <a class="code" href="classNL3D_1_1CDriverGL.html#z412_0">computeMipMapMemoryUsage</a>(uint <a class="code" href="driver__opengl__extension__def_8h.html#a367">w</a>, uint h, GLint glfmt) <font class="keyword">const</font>; +00835 <font class="comment">// @}</font> +00836 +00838 <font class="comment">// @{</font> +00839 +00840 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_0">isVertexProgramSupported</a> () <font class="keyword">const</font>; +00841 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_1">isVertexProgramEmulated</a> () <font class="keyword">const</font>; +00842 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_2">activeVertexProgram</a> (CVertexProgram *<a class="code" href="driver__opengl__extension__def_8h.html#a360">program</a>); +00843 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, <font class="keywordtype">float</font>, <font class="keywordtype">float</font>, <font class="keywordtype">float</font>, <font class="keywordtype">float</font>); +00844 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, <font class="keywordtype">double</font>, <font class="keywordtype">double</font>, <font class="keywordtype">double</font>, <font class="keywordtype">double</font>); +00845 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint indexStart, <font class="keyword">const</font> <a class="code" href="classNLMISC_1_1CVector.html">NLMISC::CVector</a>& <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>); +00846 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint indexStart, <font class="keyword">const</font> <a class="code" href="classNLMISC_1_1CVectorD.html">NLMISC::CVectorD</a>& <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>); +00847 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, uint <a class="code" href="driver__opengl__extension__def_8h.html#a410">num</a>, <font class="keyword">const</font> <font class="keywordtype">float</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a409">src</a>); +00848 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_3">setConstant</a> (uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, uint <a class="code" href="driver__opengl__extension__def_8h.html#a410">num</a>, <font class="keyword">const</font> <font class="keywordtype">double</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a409">src</a>); +00849 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_9">setConstantMatrix</a> (uint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>, IDriver::TMatrix <a class="code" href="driver__opengl__extension__def_8h.html#a370">matrix</a>, IDriver::TTransform <a class="code" href="driver__opengl__extension__def_8h.html#a371">transform</a>); +00850 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_10">enableVertexProgramDoubleSidedColor</a>(<font class="keywordtype">bool</font> doubleSided); +00851 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z413_11">supportVertexProgramDoubleSidedColor</a>() <font class="keyword">const</font>; +00852 +00853 +00854 <font class="comment">// @}</font> +00855 +00857 <font class="comment">// @{</font> +00858 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z414_0">activeNVVertexProgram</a> (CVertexProgram *<a class="code" href="driver__opengl__extension__def_8h.html#a360">program</a>); +00859 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z414_1">activeEXTVertexShader</a> (CVertexProgram *<a class="code" href="driver__opengl__extension__def_8h.html#a360">program</a>); +00861 +00862 +00863 +00865 <font class="comment">// @{</font> +00867 <font class="comment"> CMaterial::TShader getSupportedShader(CMaterial::TShader shader);</font> +00868 <font class="comment">// @}</font> +00869 +<a name="l00870"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c27">00870</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c27">isVertexProgramEnabled</a> ()<font class="keyword"> const</font> +00871 <font class="keyword"> </font>{ +00872 <font class="comment">// Don't use glIsEnabled, too slow.</font> +00873 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o24">_VertexProgramEnabled</a>; +00874 } +00875 +00876 <font class="comment">// Track state of activeVertexProgram()</font> +<a name="l00877"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o24">00877</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o24">_VertexProgramEnabled</a>; +00878 <font class="comment">// Say if last setupGlArrays() was a VertexProgram setup.</font> +<a name="l00879"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o25">00879</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o25">_LastSetupGLArrayVertexProgram</a>; +00880 +00881 <font class="comment">// The last vertex program that was setupped</font> +<a name="l00882"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o26">00882</a> <a class="code" href="classNLMISC_1_1CRefPtr.html">NLMISC::CRefPtr<CVertexProgram></a> <a class="code" href="classNL3D_1_1CDriverGL.html#o26">_LastSetuppedVP</a>; +00883 +<a name="l00884"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o27">00884</a> <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#o27">_ForceDXTCCompression</a>; +<a name="l00886"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o28">00886</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#o28">_ForceTextureResizePower</a>; +00887 +00888 +00889 <font class="comment">// user texture matrix</font> +<a name="l00890"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o29">00890</a> <a class="code" href="classNLMISC_1_1CMatrix.html">NLMISC::CMatrix</a> <a class="code" href="classNL3D_1_1CDriverGL.html#o29">_UserTexMat</a>[<a class="code" href="namespaceNL3D.html#a94">IDRV_MAT_MAXTEXTURES</a>]; +<a name="l00891"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o30">00891</a> uint <a class="code" href="classNL3D_1_1CDriverGL.html#o30">_UserTexMatEnabled</a>; <font class="comment">// bitm ask for user texture coords</font> +00892 <font class="comment">//NLMISC::CMatrix _UserTexMat[IDRV_MAT_MAXTEXTURES];</font> +00893 +00894 <font class="comment">// Static const</font> +00895 <font class="keyword">static</font> <font class="keyword">const</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#r1">NumCoordinatesType</a>[CVertexBuffer::NumType]; +00896 <font class="keyword">static</font> <font class="keyword">const</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#r2">GLType</a>[CVertexBuffer::NumType]; +00897 <font class="keyword">static</font> <font class="keyword">const</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#r3">GLVertexAttribIndex</a>[CVertexBuffer::NumValue]; +00898 <font class="keyword">static</font> <font class="keyword">const</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#r4">GLMatrix</a>[IDriver::NumMatrix]; +00899 <font class="keyword">static</font> <font class="keyword">const</font> uint <a class="code" href="classNL3D_1_1CDriverGL.html#r5">GLTransform</a>[IDriver::NumTransform]; +00900 +00902 <font class="comment">// @{</font> +<a name="l00903"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z416_0">00903</a> <a class="code" href="classNLMISC_1_1CSmartPtr.html">NLMISC::CSmartPtr<CTextureCube></a> <a class="code" href="classNL3D_1_1CDriverGL.html#z416_0">_CausticCubeMap</a>; <font class="comment">// a cube map used for the rendering of caustics</font> +00904 <font class="keyword">static</font> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z416_1">initCausticCubeMap</a>(); +00905 <font class="comment">// @}</font> +00906 +<a name="l00908"></a><a class="code" href="classNL3D_1_1CDriverGL.html#c28">00908</a> sint <a class="code" href="classNL3D_1_1CDriverGL.html#c28">inlGetNumTextStages</a>()<font class="keyword"> const </font>{<font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z403_0">_Extensions</a>.NbTextureStages;} +00909 +00910 +<a name="l00911"></a><a class="code" href="classNL3D_1_1CDriverGL.html#o31">00911</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> <a class="code" href="classNL3D_1_1CDriverGL.html#o31">_CurrentBlendConstantColor</a>; +00912 +00914 <font class="comment">// @{</font> +00915 <font class="comment">// Variants offset used for : </font> +00916 <font class="comment">// Secondary color</font> +00917 <font class="comment">// Fog Coords</font> +00918 <font class="comment">// Skin Weight</font> +00919 <font class="comment">// Palette Skin</font> +00920 <font class="comment">// This mean that they must have 4 components</font> +00921 <font class="keyword">public</font>: +<a name="l00922"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_0">00922</a> <font class="keyword">enum</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0">EEVSVariants</a> { <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s1">EVSSecondaryColorVariant</a> = 0, <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s2">EVSFogCoordsVariant</a> = 1, <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s3">EVSSkinWeightVariant</a> = 2, <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s4">EVSPaletteSkinVariant</a> = 3, <a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s5">EVSNumVariants</a> }; +00923 <font class="keyword">private</font>: +00924 <font class="comment">// Handle for standard gl arrays</font> +<a name="l00925"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_2">00925</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_2">_EVSPositionHandle</a>; +<a name="l00926"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_3">00926</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_3">_EVSNormalHandle</a>; +<a name="l00927"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_4">00927</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_4">_EVSColorHandle</a>; +<a name="l00928"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_5">00928</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_5">_EVSTexHandle</a>[8]; +00929 <font class="comment">// Handle of the first constant c[0]. In vertex program wa have 96 constant c[0] .. c[95]</font> +<a name="l00930"></a><a class="code" href="classNL3D_1_1CDriverGL.html#z417_6">00930</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_6">_EVSConstantHandle</a>; +00931 <font class="comment">// </font> +00932 <font class="keywordtype">bool</font> <a class="code" href="classNL3D_1_1CDriverGL.html#z417_1">setupEXTVertexShader</a>(<font class="keyword">const</font> <a class="code" href="classCVPParser.html#s0">CVPParser::TProgram</a> &<a class="code" href="driver__opengl__extension__def_8h.html#a360">program</a>, <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="driver__opengl__extension__def_8h.html#a356">id</a>, uint variants[<a class="code" href="classNL3D_1_1CDriverGL.html#z417_0s5">EVSNumVariants</a>], uint16 &usedInputRegisters); +00933 <font class="comment">// </font> +00934 <font class="comment">// @}</font> +00935 +00936 <font class="comment">// init EMBM settings (set each stage to modify the next)</font> +00937 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CDriverGL.html#c29">initEMBM</a>(); +00938 +00939 <font class="comment">// Monitor color parameters backup</font> +00940 <font class="preprocessor">#ifdef WIN32</font> +00941 <font class="preprocessor"></font> <font class="keywordtype">bool</font> _NeedToRestaureGammaRamp; +00942 uint16 _GammaRampBackuped[3*256]; +00943 <font class="preprocessor">#endif</font> +00944 <font class="preprocessor"></font>}; +00945 +00946 +00947 <font class="comment">// ***************************************************************************</font> +<a name="l00948"></a><a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html">00948</a> <font class="keyword">class </font>CVertexProgamDrvInfosGL : <font class="keyword">public</font> IVertexProgramDrvInfos +00949 { +00950 <font class="keyword">public</font>: +00951 <font class="comment">// The GL Id.</font> +<a name="l00952"></a><a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m0">00952</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m0">ID</a>; +00953 +<a name="l00957"></a><a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m1">00957</a> <a class="code" href="driver__opengl__extension__def_8h.html#a423">GLuint</a> <a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m1">Variants</a>[CDriverGL::EVSNumVariants]; +<a name="l00962"></a><a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m2">00962</a> uint16 <a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#m2">UsedVertexComponents</a>; +00963 +00964 +00965 <font class="comment">// The gl id is auto created here.</font> +00966 <a class="code" href="classNL3D_1_1CVertexProgamDrvInfosGL.html#a0">CVertexProgamDrvInfosGL</a> (CDriverGL *drv, <a class="code" href="namespaceNL3D.html#a297">ItVtxPrgDrvInfoPtrList</a> it); +00967 }; +00968 +00969 +00970 } <font class="comment">// NL3D</font> +00971 +00972 <font class="preprocessor">#endif // NL_OPENGL_H</font> +</pre></div> + +<!-- footer --> +<BR><FONT Size=+5> </FONT> +</TD> +<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD> +</TR> +</TABLE> +</BODY> +</HTML> |