<html> <head> <title>OgreD3D9GpuProgram.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link type="text/css" rel="stylesheet" href="style.css"> </head> <body> <!-- Generated by Doxygen 1.3.6 --> <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> <h1>OgreD3D9GpuProgram.h</h1><a href="OgreD3D9GpuProgram_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span> 00002 <span class="comment">-----------------------------------------------------------------------------</span> 00003 <span class="comment">This source file is part of OGRE</span> 00004 <span class="comment"> (Object-oriented Graphics Rendering Engine)</span> 00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span> 00006 <span class="comment"></span> 00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span> 00008 <span class="comment">Also see acknowledgements in Readme.html</span> 00009 <span class="comment"></span> 00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span> 00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span> 00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span> 00013 <span class="comment">version.</span> 00014 <span class="comment"></span> 00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span> 00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span> 00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span> 00018 <span class="comment"></span> 00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span> 00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span> 00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span> 00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span> 00023 <span class="comment">-----------------------------------------------------------------------------</span> 00024 <span class="comment">*/</span> 00025 <span class="preprocessor">#ifndef __D3D9GpuProgram_H_</span> 00026 <span class="preprocessor"></span><span class="preprocessor">#define __D3D9GpuProgram_H_</span> 00027 <span class="preprocessor"></span> 00028 <span class="comment">// Precompiler options</span> 00029 <span class="preprocessor">#include "<a class="code" href="OgreD3D9Prerequisites_8h.html">OgreD3D9Prerequisites.h</a>"</span> 00030 <span class="preprocessor">#include "<a class="code" href="OgreGpuProgram_8h.html">OgreGpuProgram.h</a>"</span> 00031 00032 <span class="keyword">namespace </span>Ogre { 00033 <a name="l00035"></a><a class="code" href="classOgre_1_1D3D9GpuProgram.html">00035</a> <span class="keyword">class </span><a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a> : <span class="keyword">public</span> <a class="code" href="classOgre_1_1GpuProgram.html">GpuProgram</a> 00036 { 00037 <span class="keyword">protected</span>: <a name="l00038"></a><a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp1">00038</a> LPDIRECT3DDEVICE9 <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp1">mpDevice</a>; <a name="l00039"></a><a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp2">00039</a> LPD3DXBUFFER <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp2">mpExternalMicrocode</a>; <span class="comment">// microcode from elsewhere, we do NOT delete this ourselves</span> 00040 <span class="keyword">public</span>: 00041 <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuPrograma0">D3D9GpuProgram</a>(<a class="code" href="classOgre_1_1ResourceManager.html">ResourceManager</a>* creator, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle, 00042 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader, LPDIRECT3DDEVICE9 pDev); 00043 00044 <a name="l00049"></a><a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexPrograma2">00049</a> <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexPrograma2">setExternalMicrocode</a>(LPD3DXBUFFER pMicrocode) { <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp2">mpExternalMicrocode</a> = pMicrocode; } <a name="l00051"></a><a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexPrograma3">00051</a> LPD3DXBUFFER <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexPrograma3">getExternalMicrocode</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramp2">mpExternalMicrocode</a>; } 00052 <span class="keyword">protected</span>: 00054 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramb2">loadImpl</a>(<span class="keywordtype">void</span>); 00056 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuVertexProgramb3">loadFromSource</a>(<span class="keywordtype">void</span>); 00058 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html#Ogre_1_1D3D9GpuProgramb2">loadFromMicrocode</a>(LPD3DXBUFFER microcode) = 0; 00059 00060 00061 }; 00062 <a name="l00064"></a><a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html">00064</a> <span class="keyword">class </span><a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html">D3D9GpuVertexProgram</a> : <span class="keyword">public</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a> 00065 { 00066 <span class="keyword">protected</span>: <a name="l00067"></a><a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexProgramp0">00067</a> LPDIRECT3DVERTEXSHADER9 <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexProgramp0">mpVertexShader</a>; 00068 <span class="keyword">public</span>: 00069 <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexPrograma0">D3D9GpuVertexProgram</a>(<a class="code" href="classOgre_1_1ResourceManager.html">ResourceManager</a>* creator, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle, 00070 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader, LPDIRECT3DDEVICE9 pDev); 00071 <a name="l00073"></a><a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexPrograma1">00073</a> LPDIRECT3DVERTEXSHADER9 <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexPrograma1">getVertexShader</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexProgramp0">mpVertexShader</a>; } 00074 <span class="keyword">protected</span>: 00076 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexProgramb0">unloadImpl</a>(<span class="keywordtype">void</span>); 00077 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuVertexProgram.html#Ogre_1_1D3D9GpuVertexProgramb1">loadFromMicrocode</a>(LPD3DXBUFFER microcode); 00078 }; 00079 <a name="l00081"></a><a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html">00081</a> <span class="keyword">class </span><a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html">D3D9GpuFragmentProgram</a> : <span class="keyword">public</span> <a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a> 00082 { 00083 <span class="keyword">protected</span>: <a name="l00084"></a><a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentProgramp0">00084</a> LPDIRECT3DPIXELSHADER9 <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentProgramp0">mpPixelShader</a>; 00085 <span class="keyword">public</span>: 00086 <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentPrograma0">D3D9GpuFragmentProgram</a>(<a class="code" href="classOgre_1_1ResourceManager.html">ResourceManager</a>* creator, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& name, <a class="code" href="namespaceOgre.html#a485">ResourceHandle</a> handle, 00087 <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a426">String</a>& group, <span class="keywordtype">bool</span> isManual, <a class="code" href="classOgre_1_1ManualResourceLoader.html">ManualResourceLoader</a>* loader, LPDIRECT3DDEVICE9 pDev); <a name="l00089"></a><a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentPrograma1">00089</a> LPDIRECT3DPIXELSHADER9 <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentPrograma1">getPixelShader</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentProgramp0">mpPixelShader</a>; } 00090 <span class="keyword">protected</span>: 00092 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentProgramb0">unloadImpl</a>(<span class="keywordtype">void</span>); 00093 <span class="keywordtype">void</span> <a class="code" href="classOgre_1_1D3D9GpuFragmentProgram.html#Ogre_1_1D3D9GpuFragmentProgramb1">loadFromMicrocode</a>(LPD3DXBUFFER microcode); 00094 }; <a name="l00101"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html">00101</a> <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> D3D9GpuProgramPtr : <span class="keyword">public</span> <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><D3D9GpuProgram> 00102 { 00103 <span class="keyword">public</span>: <a name="l00104"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html#Ogre_1_1D3D9GpuProgramPtra0">00104</a> D3D9GpuProgramPtr() : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><<a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a>>() {} <a name="l00105"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html#Ogre_1_1D3D9GpuProgramPtra1">00105</a> <span class="keyword">explicit</span> D3D9GpuProgramPtr(<a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a>* rep) : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><<a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a>>(rep) {} <a name="l00106"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html#Ogre_1_1D3D9GpuProgramPtra2">00106</a> D3D9GpuProgramPtr(<span class="keyword">const</span> D3D9GpuProgramPtr& r) : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><<a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a>>(r) {} <a name="l00107"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html#Ogre_1_1D3D9GpuProgramPtra3">00107</a> D3D9GpuProgramPtr(<span class="keyword">const</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& r) : <a class="code" href="classOgre_1_1SharedPtr.html">SharedPtr</a><<a class="code" href="classOgre_1_1D3D9GpuProgram.html">D3D9GpuProgram</a>>() 00108 { 00109 <span class="comment">// lock & copy other mutex pointer</span> 00110 <a class="code" href="OgrePrerequisites_8h.html#a14">OGRE_LOCK_MUTEX</a>(*r.OGRE_AUTO_MUTEX_NAME) 00111 <a class="code" href="OgrePrerequisites_8h.html#a19">OGRE_COPY_AUTO_SHARED_MUTEX</a>(r.OGRE_AUTO_MUTEX_NAME) 00112 pRep = static_cast<D3D9GpuProgram*>(r.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra12">getPointer</a>()); 00113 pUseCount = r.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra11">useCountPointer</a>(); 00114 <span class="keywordflow">if</span> (pUseCount) 00115 { 00116 ++(*pUseCount); 00117 } 00118 } 00119 <a name="l00121"></a><a class="code" href="classOgre_1_1D3D9GpuProgramPtr.html#Ogre_1_1D3D9GpuProgramPtra4">00121</a> D3D9GpuProgramPtr& operator=(<span class="keyword">const</span> <a class="code" href="classOgre_1_1SharedPtr.html">ResourcePtr</a>& r) 00122 { 00123 <span class="keywordflow">if</span> (pRep == static_cast<D3D9GpuProgram*>(r.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra12">getPointer</a>())) 00124 <span class="keywordflow">return</span> *<span class="keyword">this</span>; 00125 release(); 00126 <span class="comment">// lock & copy other mutex pointer</span> 00127 <a class="code" href="OgrePrerequisites_8h.html#a14">OGRE_LOCK_MUTEX</a>(*r.OGRE_AUTO_MUTEX_NAME) 00128 <a class="code" href="OgrePrerequisites_8h.html#a19">OGRE_COPY_AUTO_SHARED_MUTEX</a>(r.OGRE_AUTO_MUTEX_NAME) 00129 pRep = static_cast<D3D9GpuProgram*>(r.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra12">getPointer</a>()); 00130 pUseCount = r.<a class="code" href="classOgre_1_1SharedPtr.html#Ogre_1_1SharedPtra11">useCountPointer</a>(); 00131 <span class="keywordflow">if</span> (pUseCount) 00132 { 00133 ++(*pUseCount); 00134 } 00135 <span class="keywordflow">return</span> *<span class="keyword">this</span>; 00136 } 00137 }; 00138 00139 } 00140 00141 00142 <span class="preprocessor">#endif</span> </pre></div><p> Copyright © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:04 2005 </p> </body> </html>