Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# OgreD3D9GpuProgram.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright © 2000-2003 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025 #ifndef __D3D9GpuProgram_H_
    00026 #define __D3D9GpuProgram_H_
    00027
    00028 // Precompiler options
    00029 #include "OgreD3D9Prerequisites.h"
    00030 #include "OgreGpuProgram.h"
    00031
    00032 namespace Ogre {
    00033
    00035     class D3D9GpuProgram : public GpuProgram
    00036     {
    00037     protected:
    00038         LPDIRECT3DDEVICE9 mpDevice;
    00039         LPD3DXBUFFER mpExternalMicrocode; // microcode from elsewhere, we do NOT delete this ourselves
    00040     public:
    00041         D3D9GpuProgram(const String& name, GpuProgramType gptype, const String& syntaxCode, LPDIRECT3DDEVICE9 pDev);
    00042
    00047         void setExternalMicrocode(LPD3DXBUFFER pMicrocode) { mpExternalMicrocode = pMicrocode; }
    00049         LPD3DXBUFFER getExternalMicrocode(void) { return mpExternalMicrocode; }
    00051         void load(void);
    00052     protected:
    00054         void loadFromSource(void);
    00056         virtual void loadFromMicrocode(LPD3DXBUFFER microcode) = 0;
    00057
    00058
    00059     };
    00060
    00062     class D3D9GpuVertexProgram : public D3D9GpuProgram
    00063     {
    00064     protected:
    00065         LPDIRECT3DVERTEXSHADER9 mpVertexShader;
    00066     public:
    00067         D3D9GpuVertexProgram(const String& name, const String& syntaxCode, LPDIRECT3DDEVICE9 pDev);
    00069         void unload(void);
    00070
    00072         LPDIRECT3DVERTEXSHADER9 getVertexShader(void) const { return mpVertexShader; }
    00073     protected:
    00074         void loadFromMicrocode(LPD3DXBUFFER microcode);
    00075     };
    00076
    00078     class D3D9GpuFragmentProgram : public D3D9GpuProgram
    00079     {
    00080     protected:
    00081         LPDIRECT3DPIXELSHADER9 mpPixelShader;
    00082     public:
    00083         D3D9GpuFragmentProgram(const String& name, const String& syntaxCode, LPDIRECT3DDEVICE9 pDev);
    00085         void unload(void);
    00087         LPDIRECT3DPIXELSHADER9 getPixelShader(void) const { return mpPixelShader; }
    00088     protected:
    00089         void loadFromMicrocode(LPD3DXBUFFER microcode);
    00090     };
    00091
    00092 }
    00093
    00094
    00095 #endif

Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:48:20 2004