00001 /* 00002 Copyright (c) 2007-2009 Takashi Kitao 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions 00007 are met: 00008 00009 1. Redistributions of source code must retain the above copyright 00010 ` notice, this list of conditions and the following disclaimer. 00011 00012 2. Redistributions in binary form must reproduce the above copyright 00013 ` notice, this list of conditions and the following disclaimer in the 00014 ` documentation and/or other materials provided with the distribution. 00015 00016 3. The name of the author may not be used to endorse or promote products 00017 ` derived from this software without specific prior written permission. 00018 00019 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00020 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00021 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00022 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00023 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00025 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00026 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00027 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00028 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00029 */ 00030 00031 00036 class PG_API pgShd 00037 { 00038 friend class pgRend; 00039 friend class pgPrim; 00040 friend class pgSprt; 00041 friend class pgDrawMgr; 00042 00043 public: 00044 pgShd* getPrevN() const; 00045 pgShd* getNextN() const; 00046 00047 pgID getID() const; 00048 u8 getUniformNum() const; 00049 u8 getAttribNum() const; 00050 u8 getTextureNum() const; 00051 bool isValid() const; 00052 00053 private: 00054 enum ShdFlag 00055 { 00056 FLAG_UPLOAD, // 00057 FLAG_COMPILE_ERROR 00058 }; 00059 00060 pgShd(pgID shd_id, const char* vert_code, const char* frag_code, u8 uni_num, u8 att_num, u8 tex_num); 00061 ~pgShd(); 00062 void operator=(const pgShd&); 00063 00064 u32 getShdObj(); 00065 00066 pgID m_id; 00067 char* m_vert_code; 00068 char* m_frag_code; 00069 u8 m_uni_num; 00070 u8 m_att_num; 00071 u8 m_tex_num; 00072 u32 m_shd_obj; 00073 u32 m_local_to_screen_loc; 00074 u32 m_vertex_loc; 00075 u32 m_color_loc; 00076 u32 m_texcoord_loc; 00077 u32* m_uni_loc_tbl; 00078 u32* m_att_loc_tbl; 00079 u32 m_tex_loc_tbl[3]; 00080 pgFlag<u8, ShdFlag> m_flag; 00081 };
1.5.8