1 | <html> |
---|
2 | <head> |
---|
3 | <title>OgreRenderSystem.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
---|
4 | <link type="text/css" rel="stylesheet" href="style.css"> |
---|
5 | </head> |
---|
6 | |
---|
7 | <body> |
---|
8 | <!-- Generated by Doxygen 1.3.6 --> |
---|
9 | <div class="qindex"><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">Class 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">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div> |
---|
10 | <h1>OgreRenderSystem.h</h1><a href="OgreRenderSystem_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span> |
---|
11 | 00002 <span class="comment">-----------------------------------------------------------------------------</span> |
---|
12 | 00003 <span class="comment">This source file is part of OGRE</span> |
---|
13 | 00004 <span class="comment"> (Object-oriented Graphics Rendering Engine)</span> |
---|
14 | 00005 <span class="comment">For the latest info, see http://ogre.sourceforge.net/</span> |
---|
15 | 00006 <span class="comment"></span> |
---|
16 | 00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span> |
---|
17 | 00008 <span class="comment">Also see acknowledgements in Readme.html</span> |
---|
18 | 00009 <span class="comment"></span> |
---|
19 | 00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span> |
---|
20 | 00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span> |
---|
21 | 00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span> |
---|
22 | 00013 <span class="comment">version.</span> |
---|
23 | 00014 <span class="comment"></span> |
---|
24 | 00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span> |
---|
25 | 00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span> |
---|
26 | 00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span> |
---|
27 | 00018 <span class="comment"></span> |
---|
28 | 00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span> |
---|
29 | 00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span> |
---|
30 | 00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span> |
---|
31 | 00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span> |
---|
32 | 00023 <span class="comment">-----------------------------------------------------------------------------</span> |
---|
33 | 00024 <span class="comment">*/</span> |
---|
34 | 00025 <span class="preprocessor">#ifndef __RenderSystem_H_</span> |
---|
35 | 00026 <span class="preprocessor"></span><span class="preprocessor">#define __RenderSystem_H_</span> |
---|
36 | 00027 <span class="preprocessor"></span> |
---|
37 | 00028 <span class="comment">// Precompiler options</span> |
---|
38 | 00029 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span> |
---|
39 | 00030 |
---|
40 | 00031 <span class="preprocessor">#include "<a class="code" href="OgreString_8h.html">OgreString.h</a>"</span> |
---|
41 | 00032 |
---|
42 | 00033 <span class="preprocessor">#include "<a class="code" href="OgreTextureUnitState_8h.html">OgreTextureUnitState.h</a>"</span> |
---|
43 | 00034 <span class="preprocessor">#include "<a class="code" href="OgreCommon_8h.html">OgreCommon.h</a>"</span> |
---|
44 | 00035 |
---|
45 | 00036 <span class="preprocessor">#include "<a class="code" href="OgreRenderOperation_8h.html">OgreRenderOperation.h</a>"</span> |
---|
46 | 00037 <span class="preprocessor">#include "<a class="code" href="OgreRenderSystemCapabilities_8h.html">OgreRenderSystemCapabilities.h</a>"</span> |
---|
47 | 00038 <span class="preprocessor">#include "<a class="code" href="OgreRenderTarget_8h.html">OgreRenderTarget.h</a>"</span> |
---|
48 | 00039 <span class="preprocessor">#include "<a class="code" href="OgreRenderTexture_8h.html">OgreRenderTexture.h</a>"</span> |
---|
49 | 00040 <span class="preprocessor">#include "<a class="code" href="OgreFrameListener_8h.html">OgreFrameListener.h</a>"</span> |
---|
50 | 00041 <span class="preprocessor">#include "<a class="code" href="OgreConfigOptionMap_8h.html">OgreConfigOptionMap.h</a>"</span> |
---|
51 | 00042 <span class="preprocessor">#include "<a class="code" href="OgreGpuProgram_8h.html">OgreGpuProgram.h</a>"</span> |
---|
52 | 00043 <span class="preprocessor">#include "<a class="code" href="OgrePlane_8h.html">OgrePlane.h</a>"</span> |
---|
53 | 00044 <span class="preprocessor">#include "<a class="code" href="OgreIteratorWrappers_8h.html">OgreIteratorWrappers.h</a>"</span> |
---|
54 | 00045 |
---|
55 | 00046 <span class="keyword">namespace </span>Ogre |
---|
56 | 00047 { |
---|
57 | <a name="l00048"></a><a class="code" href="namespaceOgre.html#a442">00048</a> <span class="keyword">typedef</span> std::map< String, RenderTarget * > <a class="code" href="namespaceOgre.html#a442">RenderTargetMap</a>; |
---|
58 | <a name="l00049"></a><a class="code" href="namespaceOgre.html#a443">00049</a> <span class="keyword">typedef</span> std::multimap<uchar, RenderTarget * > <a class="code" href="namespaceOgre.html#a443">RenderTargetPriorityMap</a>; |
---|
59 | 00050 |
---|
60 | 00051 <span class="keyword">class </span><a class="code" href="classOgre_1_1TextureManager.html">TextureManager</a>; |
---|
61 | <a name="l00053"></a><a class="code" href="namespaceOgre.html#a670">00053</a> <span class="keyword">enum</span> <a class="code" href="namespaceOgre.html#a670">TexCoordCalcMethod</a> |
---|
62 | 00054 { |
---|
63 | 00056 <a class="code" href="namespaceOgre.html#a670a444">TEXCALC_NONE</a>, |
---|
64 | 00058 <a class="code" href="namespaceOgre.html#a670a445">TEXCALC_ENVIRONMENT_MAP</a>, |
---|
65 | 00060 <a class="code" href="namespaceOgre.html#a670a446">TEXCALC_ENVIRONMENT_MAP_PLANAR</a>, |
---|
66 | 00061 <a class="code" href="namespaceOgre.html#a670a447">TEXCALC_ENVIRONMENT_MAP_REFLECTION</a>, |
---|
67 | 00062 <a class="code" href="namespaceOgre.html#a670a448">TEXCALC_ENVIRONMENT_MAP_NORMAL</a>, |
---|
68 | 00064 <a class="code" href="namespaceOgre.html#a670a449">TEXCALC_PROJECTIVE_TEXTURE</a> |
---|
69 | 00065 }; |
---|
70 | <a name="l00067"></a><a class="code" href="namespaceOgre.html#a671">00067</a> <span class="keyword">enum</span> <a class="code" href="namespaceOgre.html#a671">StencilOperation</a> |
---|
71 | 00068 { |
---|
72 | 00070 <a class="code" href="namespaceOgre.html#a671a450">SOP_KEEP</a>, |
---|
73 | 00072 <a class="code" href="namespaceOgre.html#a671a451">SOP_ZERO</a>, |
---|
74 | 00074 <a class="code" href="namespaceOgre.html#a671a452">SOP_REPLACE</a>, |
---|
75 | 00076 <a class="code" href="namespaceOgre.html#a671a453">SOP_INCREMENT</a>, |
---|
76 | 00078 <a class="code" href="namespaceOgre.html#a671a454">SOP_DECREMENT</a>, |
---|
77 | 00080 <a class="code" href="namespaceOgre.html#a671a455">SOP_INCREMENT_WRAP</a>, |
---|
78 | 00082 <a class="code" href="namespaceOgre.html#a671a456">SOP_DECREMENT_WRAP</a>, |
---|
79 | 00084 <a class="code" href="namespaceOgre.html#a671a457">SOP_INVERT</a> |
---|
80 | 00085 }; |
---|
81 | 00086 |
---|
82 | <a name="l00088"></a><a class="code" href="namespaceOgre.html#a672">00088</a> <span class="keyword">enum</span> <a class="code" href="namespaceOgre.html#a672">FrameBufferType</a> { |
---|
83 | 00089 <a class="code" href="namespaceOgre.html#a672a458">FBT_COLOUR</a> = 0x1, |
---|
84 | 00090 <a class="code" href="namespaceOgre.html#a672a459">FBT_DEPTH</a> = 0x2, |
---|
85 | 00091 <a class="code" href="namespaceOgre.html#a672a460">FBT_STENCIL</a> = 0x4 |
---|
86 | 00092 }; |
---|
87 | 00093 |
---|
88 | <a name="l00117"></a><a class="code" href="classOgre_1_1RenderSystem.html">00117</a> <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a16">_OgreExport</a> RenderSystem |
---|
89 | 00118 { |
---|
90 | 00119 <span class="keyword">public</span>: |
---|
91 | 00122 RenderSystem(); |
---|
92 | 00123 |
---|
93 | 00126 <span class="keyword">virtual</span> ~RenderSystem(); |
---|
94 | 00127 |
---|
95 | 00130 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& getName(<span class="keywordtype">void</span>) <span class="keyword">const</span> = 0; |
---|
96 | 00131 |
---|
97 | 00153 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a114">ConfigOptionMap</a>& getConfigOptions(<span class="keywordtype">void</span>) = 0; |
---|
98 | 00154 |
---|
99 | 00174 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setConfigOption(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &name, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &value) = 0; |
---|
100 | 00175 |
---|
101 | 00178 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1HardwareOcclusionQuery.html">HardwareOcclusionQuery</a>* createHardwareOcclusionQuery(<span class="keywordtype">void</span>) = 0; |
---|
102 | 00179 |
---|
103 | 00182 <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyHardwareOcclusionQuery(<a class="code" href="classOgre_1_1HardwareOcclusionQuery.html">HardwareOcclusionQuery</a> *hq); |
---|
104 | 00183 |
---|
105 | 00188 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a426">String</a> validateConfigOptions(<span class="keywordtype">void</span>) = 0; |
---|
106 | 00189 |
---|
107 | 00206 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1RenderWindow.html">RenderWindow</a>* initialise(<span class="keywordtype">bool</span> autoCreateWindow, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& windowTitle = <span class="stringliteral">"OGRE Render Window"</span>); |
---|
108 | 00207 |
---|
109 | 00210 <span class="keyword">virtual</span> <span class="keywordtype">void</span> reinitialise(<span class="keywordtype">void</span>) = 0; |
---|
110 | 00211 |
---|
111 | 00214 <span class="keyword">virtual</span> <span class="keywordtype">void</span> shutdown(<span class="keywordtype">void</span>); |
---|
112 | 00215 |
---|
113 | 00216 |
---|
114 | 00219 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setAmbientLight(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b) = 0; |
---|
115 | 00220 |
---|
116 | 00223 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setShadingType(<a class="code" href="namespaceOgre.html#a641">ShadeOptions</a> so) = 0; |
---|
117 | 00224 |
---|
118 | 00230 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setLightingEnabled(<span class="keywordtype">bool</span> enabled) = 0; |
---|
119 | 00231 |
---|
120 | 00238 <span class="keywordtype">void</span> setWBufferEnabled(<span class="keywordtype">bool</span> enabled); |
---|
121 | 00239 |
---|
122 | 00242 <span class="keywordtype">bool</span> getWBufferEnabled(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
123 | 00243 |
---|
124 | 00340 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1RenderWindow.html">RenderWindow</a>* createRenderWindow(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height, |
---|
125 | 00341 <span class="keywordtype">bool</span> fullScreen, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a> *miscParams = 0) = 0; |
---|
126 | 00342 |
---|
127 | 00377 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1RenderTexture.html">RenderTexture</a> * createRenderTexture( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> & name, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height, |
---|
128 | 00378 <a class="code" href="namespaceOgre.html#a681">TextureType</a> texType = <a class="code" href="namespaceOgre.html#a681a547">TEX_TYPE_2D</a>, <a class="code" href="namespaceOgre.html#a667">PixelFormat</a> internalFormat = <a class="code" href="namespaceOgre.html#a667a382">PF_X8R8G8B8</a>, |
---|
129 | 00379 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a> *miscParams = 0 ) = 0; |
---|
130 | 00380 |
---|
131 | 00382 <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyRenderWindow(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); |
---|
132 | 00384 <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyRenderTexture(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); |
---|
133 | 00386 <span class="keyword">virtual</span> <span class="keywordtype">void</span> destroyRenderTarget(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name); |
---|
134 | 00387 |
---|
135 | 00390 <span class="keyword">virtual</span> <span class="keywordtype">void</span> attachRenderTarget( <a class="code" href="classOgre_1_1RenderTarget.html">RenderTarget</a> &target ); |
---|
136 | 00394 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1RenderTarget.html">RenderTarget</a> * getRenderTarget( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &name ); |
---|
137 | 00400 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1RenderTarget.html">RenderTarget</a> * detachRenderTarget( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &name ); |
---|
138 | 00401 |
---|
139 | <a name="l00403"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemw0">00403</a> <span class="keyword">typedef</span> <a class="code" href="classOgre_1_1MapIterator.html">MapIterator<Ogre::RenderTargetMap></a> <a class="code" href="classOgre_1_1MapIterator.html">RenderTargetIterator</a>; |
---|
140 | 00404 |
---|
141 | <a name="l00406"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystema24">00406</a> <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1MapIterator.html">RenderTargetIterator</a> getRenderTargetIterator(<span class="keywordtype">void</span>) { |
---|
142 | 00407 <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1MapIterator.html">RenderTargetIterator</a>( mRenderTargets.begin(), mRenderTargets.end() ); |
---|
143 | 00408 } |
---|
144 | 00411 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a426">String</a> getErrorDescription(<span class="keywordtype">long</span> errorNumber) <span class="keyword">const</span> = 0; |
---|
145 | 00412 |
---|
146 | 00426 <span class="keywordtype">void</span> setWaitForVerticalBlank(<span class="keywordtype">bool</span> enabled); |
---|
147 | 00427 |
---|
148 | 00430 <span class="keywordtype">bool</span> getWaitForVerticalBlank(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
149 | 00431 |
---|
150 | 00432 <span class="comment">// ------------------------------------------------------------------------</span> |
---|
151 | 00433 <span class="comment">// Internal Rendering Access</span> |
---|
152 | 00434 <span class="comment">// All methods below here are normally only called by other OGRE classes</span> |
---|
153 | 00435 <span class="comment">// They can be called by library user if required</span> |
---|
154 | 00436 <span class="comment">// ------------------------------------------------------------------------</span> |
---|
155 | 00437 |
---|
156 | 00438 |
---|
157 | 00442 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _useLights(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a59">LightList</a>& lights, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> limit) = 0; |
---|
158 | 00444 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setWorldMatrix(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a> &m) = 0; |
---|
159 | 00446 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setWorldMatrices(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>* m, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> count); |
---|
160 | 00448 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setViewMatrix(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a> &m) = 0; |
---|
161 | 00450 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setProjectionMatrix(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a> &m) = 0; |
---|
162 | 00456 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureUnitSettings(size_t texUnit, <a class="code" href="classOgre_1_1TextureUnitState.html">TextureUnitState</a>& tl); |
---|
163 | 00458 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _disableTextureUnit(size_t texUnit); |
---|
164 | 00460 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _disableTextureUnitsFrom(size_t texUnit); |
---|
165 | 00494 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setSurfaceParams(<span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> &ambient, |
---|
166 | 00495 <span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> &diffuse, <span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> &specular, |
---|
167 | 00496 <span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> &emissive, <a class="code" href="namespaceOgre.html#a420">Real</a> shininess, |
---|
168 | 00497 <a class="code" href="namespaceOgre.html#a58">TrackVertexColourType</a> tracking = TVC_NONE) = 0; |
---|
169 | 00514 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTexture(size_t unit, <span class="keywordtype">bool</span> enabled, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a> &texname) = 0; |
---|
170 | 00515 |
---|
171 | 00525 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureCoordSet(size_t unit, size_t index) = 0; |
---|
172 | 00526 |
---|
173 | 00534 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureCoordCalculation(size_t unit, TexCoordCalcMethod m, |
---|
174 | 00535 <span class="keyword">const</span> <a class="code" href="classOgre_1_1Frustum.html">Frustum</a>* frustum = 0) = 0; |
---|
175 | 00536 |
---|
176 | 00543 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureBlendMode(size_t unit, <span class="keyword">const</span> <a class="code" href="classOgre_1_1LayerBlendModeEx.html">LayerBlendModeEx</a>& bm) = 0; |
---|
177 | 00544 |
---|
178 | 00551 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureUnitFiltering(size_t unit, FilterOptions minFilter, |
---|
179 | 00552 FilterOptions magFilter, FilterOptions mipFilter); |
---|
180 | 00553 |
---|
181 | 00559 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureUnitFiltering(size_t unit, FilterType ftype, FilterOptions filter) = 0; |
---|
182 | 00560 |
---|
183 | 00562 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureLayerAnisotropy(size_t unit, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxAnisotropy) = 0; |
---|
184 | 00563 |
---|
185 | 00565 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureAddressingMode(size_t unit, TextureUnitState::TextureAddressingMode tam) = 0; |
---|
186 | 00566 |
---|
187 | 00571 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setTextureMatrix(size_t unit, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>& xform) = 0; |
---|
188 | 00572 |
---|
189 | 00581 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setSceneBlending(SceneBlendFactor sourceFactor, SceneBlendFactor destFactor) = 0; |
---|
190 | 00582 |
---|
191 | 00588 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setAlphaRejectSettings(CompareFunction func, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> value) = 0; |
---|
192 | 00593 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _beginFrame(<span class="keywordtype">void</span>) = 0; |
---|
193 | 00594 |
---|
194 | 00595 |
---|
195 | 00599 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _endFrame(<span class="keywordtype">void</span>) = 0; |
---|
196 | 00607 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setViewport(<a class="code" href="classOgre_1_1Viewport.html">Viewport</a> *vp) = 0; |
---|
197 | 00609 <span class="keyword">virtual</span> <a class="code" href="classOgre_1_1Viewport.html">Viewport</a>* _getViewport(<span class="keywordtype">void</span>); |
---|
198 | 00610 |
---|
199 | 00622 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setCullingMode(CullingMode mode) = 0; |
---|
200 | 00623 |
---|
201 | 00624 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a643">CullingMode</a> _getCullingMode(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
202 | 00625 |
---|
203 | 00639 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setDepthBufferParams(<span class="keywordtype">bool</span> depthTest = <span class="keyword">true</span>, <span class="keywordtype">bool</span> depthWrite = <span class="keyword">true</span>, CompareFunction depthFunction = CMPF_LESS_EQUAL) = 0; |
---|
204 | 00640 |
---|
205 | 00645 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setDepthBufferCheckEnabled(<span class="keywordtype">bool</span> enabled = <span class="keyword">true</span>) = 0; |
---|
206 | 00650 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setDepthBufferWriteEnabled(<span class="keywordtype">bool</span> enabled = <span class="keyword">true</span>) = 0; |
---|
207 | 00658 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setDepthBufferFunction(CompareFunction func = CMPF_LESS_EQUAL) = 0; |
---|
208 | 00666 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setColourBufferWriteEnabled(<span class="keywordtype">bool</span> red, <span class="keywordtype">bool</span> green, <span class="keywordtype">bool</span> blue, <span class="keywordtype">bool</span> alpha) = 0; |
---|
209 | 00679 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setDepthBias(<a class="code" href="namespaceOgre.html#a422">ushort</a> bias) = 0; |
---|
210 | 00691 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setFog(FogMode mode = FOG_NONE, <span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a>& colour = ColourValue::White, <a class="code" href="namespaceOgre.html#a420">Real</a> expDensity = 1.0, <a class="code" href="namespaceOgre.html#a420">Real</a> linearStart = 0.0, <a class="code" href="namespaceOgre.html#a420">Real</a> linearEnd = 1.0) = 0; |
---|
211 | 00692 |
---|
212 | 00693 |
---|
213 | 00695 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _beginGeometryCount(<span class="keywordtype">void</span>); |
---|
214 | 00697 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _getFaceCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
215 | 00699 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _getVertexCount(<span class="keywordtype">void</span>) <span class="keyword">const</span>; |
---|
216 | 00700 |
---|
217 | 00709 <span class="keyword">virtual</span> <span class="keywordtype">void</span> convertColourValue(<span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a>& colour, <a class="code" href="namespaceOgre.html#a412">uint32</a>* pDest) = 0; |
---|
218 | 00710 |
---|
219 | 00717 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _makeProjectionMatrix(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>& fovy, <a class="code" href="namespaceOgre.html#a420">Real</a> aspect, <a class="code" href="namespaceOgre.html#a420">Real</a> nearPlane, <a class="code" href="namespaceOgre.html#a420">Real</a> farPlane, |
---|
220 | 00718 <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>& dest, <span class="keywordtype">bool</span> forGpuProgram = <span class="keyword">false</span>) = 0; |
---|
221 | 00719 |
---|
222 | 00726 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _makeProjectionMatrix(<a class="code" href="namespaceOgre.html#a420">Real</a> left, <a class="code" href="namespaceOgre.html#a420">Real</a> right, <a class="code" href="namespaceOgre.html#a420">Real</a> bottom, <a class="code" href="namespaceOgre.html#a420">Real</a> top, |
---|
223 | 00727 <a class="code" href="namespaceOgre.html#a420">Real</a> nearPlane, <a class="code" href="namespaceOgre.html#a420">Real</a> farPlane, <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>& dest, <span class="keywordtype">bool</span> forGpuProgram = <span class="keyword">false</span>) = 0; |
---|
224 | 00734 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _makeOrthoMatrix(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>& fovy, <a class="code" href="namespaceOgre.html#a420">Real</a> aspect, <a class="code" href="namespaceOgre.html#a420">Real</a> nearPlane, <a class="code" href="namespaceOgre.html#a420">Real</a> farPlane, |
---|
225 | 00735 <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>& dest, <span class="keywordtype">bool</span> forGpuProgram = <span class="keyword">false</span>) = 0; |
---|
226 | 00736 |
---|
227 | 00753 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _applyObliqueDepthProjection(<a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a>& matrix, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Plane.html">Plane</a>& plane, |
---|
228 | 00754 <span class="keywordtype">bool</span> forGpuProgram) = 0; |
---|
229 | 00755 |
---|
230 | 00757 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _setRasterisationMode(SceneDetailLevel level) = 0; |
---|
231 | 00758 |
---|
232 | 00765 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setStencilCheckEnabled(<span class="keywordtype">bool</span> enabled) = 0; |
---|
233 | 00781 <span class="comment">/*virtual bool hasHardwareStencil(void) = 0;*/</span> |
---|
234 | 00782 |
---|
235 | 00818 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setStencilBufferParams(CompareFunction func = CMPF_ALWAYS_PASS, |
---|
236 | 00819 <a class="code" href="namespaceOgre.html#a412">uint32</a> refValue = 0, <a class="code" href="namespaceOgre.html#a412">uint32</a> mask = 0xFFFFFFFF, |
---|
237 | 00820 StencilOperation stencilFailOp = SOP_KEEP, |
---|
238 | 00821 StencilOperation depthFailOp = SOP_KEEP, |
---|
239 | 00822 StencilOperation passOp = SOP_KEEP, |
---|
240 | 00823 <span class="keywordtype">bool</span> twoSidedOperation = <span class="keyword">false</span>) = 0; |
---|
241 | 00824 |
---|
242 | 00825 |
---|
243 | 00826 |
---|
244 | 00828 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setVertexDeclaration(<a class="code" href="classOgre_1_1VertexDeclaration.html">VertexDeclaration</a>* decl) = 0; |
---|
245 | 00830 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setVertexBufferBinding(<a class="code" href="classOgre_1_1VertexBufferBinding.html">VertexBufferBinding</a>* binding) = 0; |
---|
246 | 00831 |
---|
247 | 00842 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setNormaliseNormals(<span class="keywordtype">bool</span> normalise) = 0; |
---|
248 | 00843 |
---|
249 | 00856 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _render(<span class="keyword">const</span> <a class="code" href="classOgre_1_1RenderOperation.html">RenderOperation</a>& op); |
---|
250 | 00857 |
---|
251 | <a name="l00859"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystema76">00859</a> <span class="keyword">const</span> <a class="code" href="classOgre_1_1RenderSystemCapabilities.html">RenderSystemCapabilities</a>* getCapabilities(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mCapabilities; } |
---|
252 | 00860 |
---|
253 | 00865 <span class="keyword">virtual</span> <span class="keywordtype">void</span> bindGpuProgram(<a class="code" href="classOgre_1_1GpuProgram.html">GpuProgram</a>* prg) = 0; |
---|
254 | 00866 |
---|
255 | 00868 <span class="keyword">virtual</span> <span class="keywordtype">void</span> bindGpuProgramParameters(GpuProgramType gptype, <a class="code" href="classOgre_1_1SharedPtr.html">GpuProgramParametersSharedPtr</a> <a class="code" href="OgreGLPrerequisites_8h.html#a74">params</a>) = 0; |
---|
256 | 00873 <span class="keyword">virtual</span> <span class="keywordtype">void</span> unbindGpuProgram(GpuProgramType gptype) = 0; |
---|
257 | 00874 |
---|
258 | 00877 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setClipPlanes(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a410">PlaneList</a>& clipPlanes) = 0; |
---|
259 | 00878 |
---|
260 | 00880 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _initRenderTargets(<span class="keywordtype">void</span>); |
---|
261 | 00881 |
---|
262 | 00885 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _notifyCameraRemoved(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Camera.html">Camera</a>* cam); |
---|
263 | 00886 |
---|
264 | 00888 <span class="keyword">virtual</span> <span class="keywordtype">void</span> _updateAllRenderTargets(<span class="keywordtype">void</span>); |
---|
265 | 00889 |
---|
266 | 00891 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setClipPlane (<a class="code" href="namespaceOgre.html#a422">ushort</a> index, <span class="keyword">const</span> <a class="code" href="classOgre_1_1Plane.html">Plane</a> &p); |
---|
267 | 00893 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setClipPlane (<a class="code" href="namespaceOgre.html#a422">ushort</a> index, <a class="code" href="namespaceOgre.html#a420">Real</a> A, <a class="code" href="namespaceOgre.html#a420">Real</a> B, <a class="code" href="namespaceOgre.html#a420">Real</a> C, <a class="code" href="namespaceOgre.html#a420">Real</a> D) = 0; |
---|
268 | 00895 <span class="keyword">virtual</span> <span class="keywordtype">void</span> enableClipPlane (<a class="code" href="namespaceOgre.html#a422">ushort</a> index, <span class="keywordtype">bool</span> enable) = 0; |
---|
269 | 00896 |
---|
270 | 00899 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setInvertVertexWinding(<span class="keywordtype">bool</span> invert); |
---|
271 | 00911 <span class="keyword">virtual</span> <span class="keywordtype">void</span> setScissorTest(<span class="keywordtype">bool</span> enabled, size_t left = 0, size_t top = 0, |
---|
272 | 00912 size_t right = 800, size_t bottom = 600) = 0; |
---|
273 | 00913 |
---|
274 | 00921 <span class="keyword">virtual</span> <span class="keywordtype">void</span> clearFrameBuffer(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> buffers, |
---|
275 | 00922 <span class="keyword">const</span> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a>& colour = ColourValue::Black, |
---|
276 | 00923 <a class="code" href="namespaceOgre.html#a420">Real</a> depth = 1.0f, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> stencil = 0) = 0; |
---|
277 | 00933 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getHorizontalTexelOffset(<span class="keywordtype">void</span>) = 0; |
---|
278 | 00943 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getVerticalTexelOffset(<span class="keywordtype">void</span>) = 0; |
---|
279 | 00944 |
---|
280 | 00953 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getMinimumDepthInputValue(<span class="keywordtype">void</span>) = 0; |
---|
281 | 00962 <span class="keyword">virtual</span> <a class="code" href="namespaceOgre.html#a420">Real</a> getMaximumDepthInputValue(<span class="keywordtype">void</span>) = 0; |
---|
282 | 00963 |
---|
283 | <a name="l00968"></a><a class="code" href="classOgre_1_1RenderSystem_1_1Listener.html">00968</a> <span class="keyword">class </span><a class="code" href="class__OgreExport.html">_OgreExport</a> Listener |
---|
284 | 00969 { |
---|
285 | 00970 <span class="keyword">public</span>: |
---|
286 | <a name="l00971"></a><a class="code" href="classOgre_1_1RenderSystem_1_1Listener.html#Ogre_1_1RenderSystem_1_1Listenera0">00971</a> Listener() {} |
---|
287 | <a name="l00972"></a><a class="code" href="classOgre_1_1RenderSystem_1_1Listener.html#Ogre_1_1RenderSystem_1_1Listenera1">00972</a> <span class="keyword">virtual</span> ~Listener() {} |
---|
288 | 00973 |
---|
289 | 00979 <span class="keyword">virtual</span> <span class="keywordtype">void</span> eventOccurred(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& eventName, |
---|
290 | 00980 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* parameters = 0) = 0; |
---|
291 | 00981 }; |
---|
292 | 00995 <span class="keyword">virtual</span> <span class="keywordtype">void</span> addListener(Listener* l); |
---|
293 | 00998 <span class="keyword">virtual</span> <span class="keywordtype">void</span> removeListener(Listener* l); |
---|
294 | 00999 |
---|
295 | <a name="l01004"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystema96">01004</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a535">StringVector</a>& getRenderSystemEvents(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mEventNames; } |
---|
296 | 01005 <span class="keyword">protected</span>: |
---|
297 | 01006 |
---|
298 | 01007 |
---|
299 | <a name="l01009"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp0">01009</a> <a class="code" href="namespaceOgre.html#a442">RenderTargetMap</a> mRenderTargets; |
---|
300 | <a name="l01011"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp1">01011</a> <a class="code" href="namespaceOgre.html#a443">RenderTargetPriorityMap</a> mPrioritisedRenderTargets; |
---|
301 | <a name="l01013"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp2">01013</a> <a class="code" href="classOgre_1_1RenderTarget.html">RenderTarget</a> * mActiveRenderTarget; |
---|
302 | 01014 |
---|
303 | 01015 <span class="comment">// Texture manager</span> |
---|
304 | 01016 <span class="comment">// A concrete class of this will be created and</span> |
---|
305 | 01017 <span class="comment">// made available under the TextureManager singleton,</span> |
---|
306 | 01018 <span class="comment">// managed by the RenderSystem</span> |
---|
307 | <a name="l01019"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp3">01019</a> <a class="code" href="classOgre_1_1TextureManager.html">TextureManager</a>* mTextureManager; |
---|
308 | 01020 |
---|
309 | <a name="l01022"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp4">01022</a> <a class="code" href="classOgre_1_1RenderSystemCapabilities.html">RenderSystemCapabilities</a>* mCapabilities; |
---|
310 | 01023 |
---|
311 | 01024 <span class="comment">// Active viewport (dest for future rendering operations)</span> |
---|
312 | <a name="l01025"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp5">01025</a> <a class="code" href="classOgre_1_1Viewport.html">Viewport</a>* mActiveViewport; |
---|
313 | 01026 |
---|
314 | <a name="l01027"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp6">01027</a> <a class="code" href="namespaceOgre.html#a643">CullingMode</a> mCullingMode; |
---|
315 | 01028 |
---|
316 | <a name="l01029"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp7">01029</a> <span class="keywordtype">bool</span> mVSync; |
---|
317 | <a name="l01030"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp8">01030</a> <span class="keywordtype">bool</span> mWBuffer; |
---|
318 | 01031 |
---|
319 | <a name="l01032"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp9">01032</a> size_t mFaceCount; |
---|
320 | <a name="l01033"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp10">01033</a> size_t mVertexCount; |
---|
321 | 01034 |
---|
322 | <a name="l01036"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp11">01036</a> <a class="code" href="classOgre_1_1Matrix4.html">Matrix4</a> mWorldMatrices[256]; |
---|
323 | 01037 |
---|
324 | <a name="l01039"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp12">01039</a> <a class="code" href="classOgre_1_1ColourValue.html">ColourValue</a> mManualBlendColours[<a class="code" href="OgreConfig_8h.html#a7">OGRE_MAX_TEXTURE_LAYERS</a>][2]; |
---|
325 | 01040 |
---|
326 | <a name="l01041"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp13">01041</a> <span class="keywordtype">bool</span> mInvertVertexWinding; |
---|
327 | 01042 |
---|
328 | <a name="l01044"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp14">01044</a> <a class="code" href="namespaceOgre.html#a535">StringVector</a> mEventNames; |
---|
329 | 01045 |
---|
330 | 01047 <span class="keyword">virtual</span> <span class="keywordtype">void</span> fireEvent(<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a62">NameValuePairList</a>* <a class="code" href="OgreGLPrerequisites_8h.html#a74">params</a> = 0); |
---|
331 | 01048 |
---|
332 | <a name="l01049"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx0">01049</a> <span class="keyword">typedef</span> std::list<Listener*> <a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx0">ListenerList</a>; |
---|
333 | <a name="l01050"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp15">01050</a> <a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx0">ListenerList</a> mEventListeners; |
---|
334 | 01051 |
---|
335 | <a name="l01052"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx1">01052</a> <span class="keyword">typedef</span> std::list<HardwareOcclusionQuery*> <a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx1">HardwareOcclusionQueryList</a>; |
---|
336 | <a name="l01053"></a><a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemp16">01053</a> <a class="code" href="classOgre_1_1RenderSystem.html#Ogre_1_1RenderSystemx1">HardwareOcclusionQueryList</a> mHwOcclusionQueries; |
---|
337 | 01054 |
---|
338 | 01055 |
---|
339 | 01056 }; |
---|
340 | 01057 } |
---|
341 | 01058 |
---|
342 | 01059 <span class="preprocessor">#endif</span> |
---|
343 | </pre></div><hr> |
---|
344 | <p> |
---|
345 | Copyright © 2000-2005 by The OGRE Team<br /> |
---|
346 | <!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/> |
---|
347 | This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/> |
---|
348 | <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> |
---|
349 | <Work rdf:about=""> |
---|
350 | <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" /> |
---|
351 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" /> |
---|
352 | </Work> |
---|
353 | <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> --> |
---|
354 | |
---|
355 | Last modified Sun Feb 12 12:59:51 2006 |
---|
356 | </p> |
---|
357 | </body> |
---|
358 | </html> |
---|