All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PvrLoader.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Rendering.h"
7 
8 #if defined(EEGEO_IOS)
9 
10 namespace Eegeo
11 {
12  namespace Helpers
13  {
14  namespace GLHelpers
15  {
16  struct TextureInfo;
17  }
18  }
19 
20  namespace iOS
21  {
22  struct PVR_Texture_Header
23  {
24  u32 dwHeaderSize;
25  u32 dwHeight;
26  u32 dwWidth;
27  u32 dwMipMapCount;
28  u32 dwpfFlags;
29  u32 dwTextureDataSize;
30  u32 dwBitCount;
31  u32 dwRBitMask;
32  u32 dwGBitMask;
33  u32 dwBBitMask;
34  u32 dwAlphaBitMask;
35  u32 dwPVR;
36  u32 dwNumSurfs;
37  } ;
38 
39  const u32 PVRTEX_MIPMAP = (1<<8);
40  const u32 PVRTEX_TWIDDLE = (1<<9);
41  const u32 PVRTEX_BUMPMAP = (1<<10);
42  const u32 PVRTEX_TILING = (1<<11);
43  const u32 PVRTEX_CUBEMAP = (1<<12);
44  const u32 PVRTEX_FALSEMIPCOL = (1<<13);
45  const u32 PVRTEX_VOLUME = (1<<14);
46  const u32 PVRTEX_ALPHA = (1<<15);
47  const u32 PVRTEX_VERTICAL_FLIP = (1<<16);
48 
49  const u32 PVRTEX_PIXELTYPE = 0xff;
50  const u32 PVRTEX_IDENTIFIER = 0x21525650;
51 
52  const u32 PVRTEX_V1_HEADER_SIZE = 44;
53 
54  const u32 PVRTC2_MIN_TEXWIDTH = 16;
55  const u32 PVRTC2_MIN_TEXHEIGHT = 8;
56  const u32 PVRTC4_MIN_TEXWIDTH = 8;
57  const u32 PVRTC4_MIN_TEXHEIGHT = 8;
58  const u32 ETC_MIN_TEXWIDTH = 4;
59  const u32 ETC_MIN_TEXHEIGHT = 4;
60  const u32 DXT_MIN_TEXWIDTH = 4;
61  const u32 DXT_MIN_TEXHEIGHT = 4;
62 
63 
64  enum PixelType
65  {
66  MGLPT_ARGB_4444 = 0x00,
67  MGLPT_ARGB_1555,
68  MGLPT_RGB_565,
69  MGLPT_RGB_555,
70  MGLPT_RGB_888,
71  MGLPT_ARGB_8888,
72  MGLPT_ARGB_8332,
73  MGLPT_I_8,
74  MGLPT_AI_88,
75  MGLPT_1_BPP,
76  MGLPT_VY1UY0,
77  MGLPT_Y1VY0U,
78  MGLPT_PVRTC2,
79  MGLPT_PVRTC4,
80 
81 
82  OGL_RGBA_4444= 0x10,
83  OGL_RGBA_5551,
84  OGL_RGBA_8888,
85  OGL_RGB_565,
86  OGL_RGB_555,
87  OGL_RGB_888,
88  OGL_I_8,
89  OGL_AI_88,
90  OGL_PVRTC2,
91  OGL_PVRTC4,
92  OGL_BGRA_8888,
93  OGL_A_8,
94  OGL_PVRTCII4,
95  OGL_PVRTCII2,
96 
97 #ifdef _WIN32
98 
99  D3D_DXT1 = 0x20,
100  D3D_DXT2,
101  D3D_DXT3,
102  D3D_DXT4,
103  D3D_DXT5,
104 #endif
105 
106 
107  D3D_RGB_332
108 #ifndef _WIN32
109  = 0x25
110 #endif
111  ,
112  D3D_AL_44,
113  D3D_LVU_655,
114  D3D_XLVU_8888,
115  D3D_QWVU_8888,
116 
117 
118  D3D_ABGR_2101010,
119  D3D_ARGB_2101010,
120  D3D_AWVU_2101010,
121 
122 
123  D3D_GR_1616,
124  D3D_VU_1616,
125  D3D_ABGR_16161616,
126 
127 
128  D3D_R16F,
129  D3D_GR_1616F,
130  D3D_ABGR_16161616F,
131 
132 
133  D3D_R32F,
134  D3D_GR_3232F,
135  D3D_ABGR_32323232F,
136 
137 
138  ETC_RGB_4BPP,
139  ETC_RGBA_EXPLICIT,
140  ETC_RGBA_INTERPOLATED,
141 
142  D3D_A8 = 0x40,
143  D3D_V8U8,
144  D3D_L16,
145 
146  D3D_L8,
147  D3D_AL_88,
148 
149 
150  D3D_UYVY,
151  D3D_YUY2,
152 
153 
154  DX10_R32G32B32A32_FLOAT= 0x50,
155  DX10_R32G32B32A32_UINT ,
156  DX10_R32G32B32A32_SINT,
157 
158  DX10_R32G32B32_FLOAT,
159  DX10_R32G32B32_UINT,
160  DX10_R32G32B32_SINT,
161 
162  DX10_R16G16B16A16_FLOAT ,
163  DX10_R16G16B16A16_UNORM,
164  DX10_R16G16B16A16_UINT ,
165  DX10_R16G16B16A16_SNORM ,
166  DX10_R16G16B16A16_SINT ,
167 
168  DX10_R32G32_FLOAT ,
169  DX10_R32G32_UINT ,
170  DX10_R32G32_SINT ,
171 
172  DX10_R10G10B10A2_UNORM ,
173  DX10_R10G10B10A2_UINT ,
174 
175  DX10_R11G11B10_FLOAT ,
176 
177  DX10_R8G8B8A8_UNORM ,
178  DX10_R8G8B8A8_UNORM_SRGB ,
179  DX10_R8G8B8A8_UINT ,
180  DX10_R8G8B8A8_SNORM ,
181  DX10_R8G8B8A8_SINT ,
182 
183  DX10_R16G16_FLOAT ,
184  DX10_R16G16_UNORM ,
185  DX10_R16G16_UINT ,
186  DX10_R16G16_SNORM ,
187  DX10_R16G16_SINT ,
188 
189  DX10_R32_FLOAT ,
190  DX10_R32_UINT ,
191  DX10_R32_SINT ,
192 
193  DX10_R8G8_UNORM ,
194  DX10_R8G8_UINT ,
195  DX10_R8G8_SNORM ,
196  DX10_R8G8_SINT ,
197 
198  DX10_R16_FLOAT ,
199  DX10_R16_UNORM ,
200  DX10_R16_UINT ,
201  DX10_R16_SNORM ,
202  DX10_R16_SINT ,
203 
204  DX10_R8_UNORM,
205  DX10_R8_UINT,
206  DX10_R8_SNORM,
207  DX10_R8_SINT,
208 
209  DX10_A8_UNORM,
210  DX10_R1_UNORM,
211  DX10_R9G9B9E5_SHAREDEXP,
212  DX10_R8G8_B8G8_UNORM,
213  DX10_G8R8_G8B8_UNORM,
214 
215 #ifdef _WIN32
216  DX10_BC1_UNORM,
217  DX10_BC1_UNORM_SRGB,
218 
219  DX10_BC2_UNORM,
220  DX10_BC2_UNORM_SRGB,
221 
222  DX10_BC3_UNORM,
223  DX10_BC3_UNORM_SRGB,
224 
225  DX10_BC4_UNORM,
226  DX10_BC4_SNORM,
227 
228  DX10_BC5_UNORM,
229  DX10_BC5_SNORM,
230 #endif
231 
232 
233 
234  ePT_VG_sRGBX_8888 = 0x90,
235  ePT_VG_sRGBA_8888,
236  ePT_VG_sRGBA_8888_PRE,
237  ePT_VG_sRGB_565,
238  ePT_VG_sRGBA_5551,
239  ePT_VG_sRGBA_4444,
240  ePT_VG_sL_8,
241  ePT_VG_lRGBX_8888,
242  ePT_VG_lRGBA_8888,
243  ePT_VG_lRGBA_8888_PRE,
244  ePT_VG_lL_8,
245  ePT_VG_A_8,
246  ePT_VG_BW_1,
247 
248 
249  ePT_VG_sXRGB_8888,
250  ePT_VG_sARGB_8888,
251  ePT_VG_sARGB_8888_PRE,
252  ePT_VG_sARGB_1555,
253  ePT_VG_sARGB_4444,
254  ePT_VG_lXRGB_8888,
255  ePT_VG_lARGB_8888,
256  ePT_VG_lARGB_8888_PRE,
257 
258 
259  ePT_VG_sBGRX_8888,
260  ePT_VG_sBGRA_8888,
261  ePT_VG_sBGRA_8888_PRE,
262  ePT_VG_sBGR_565,
263  ePT_VG_sBGRA_5551,
264  ePT_VG_sBGRA_4444,
265  ePT_VG_lBGRX_8888,
266  ePT_VG_lBGRA_8888,
267  ePT_VG_lBGRA_8888_PRE,
268 
269 
270  ePT_VG_sXBGR_8888,
271  ePT_VG_sABGR_8888 ,
272  ePT_VG_sABGR_8888_PRE,
273  ePT_VG_sABGR_1555,
274  ePT_VG_sABGR_4444,
275  ePT_VG_lXBGR_8888,
276  ePT_VG_lABGR_8888,
277  ePT_VG_lABGR_8888_PRE,
278 
279 
280  END_OF_PIXEL_TYPES,
281 
282  MGLPT_NOTYPE = 0xffffffff
283 
284  };
285 
286 
287  bool LoadPvr (const void* pointer, Eegeo::Helpers::GLHelpers::TextureInfo & textureInfo);
288  }
289 }
290 
291 #endif