亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pvrtexture.m

?? Compressed file has password
?? M
字號:
/*File: PVRTexture.mAbstract: The PVRTexture class is responsible for loading .pvr files.Version: 1.0Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple Inc.("Apple") in consideration of your agreement to the following terms, and youruse, installation, modification or redistribution of this Apple softwareconstitutes acceptance of these terms.  If you do not agree with these terms,please do not use, install, modify or redistribute this Apple software.In consideration of your agreement to abide by the following terms, and subjectto these terms, Apple grants you a personal, non-exclusive license, underApple's copyrights in this original Apple software (the "Apple Software"), touse, reproduce, modify and redistribute the Apple Software, with or withoutmodifications, in source and/or binary forms; provided that if you redistributethe Apple Software in its entirety and without modifications, you must retainthis notice and the following text and disclaimers in all such redistributionsof the Apple Software.Neither the name, trademarks, service marks or logos of Apple Inc. may be usedto endorse or promote products derived from the Apple Software without specificprior written permission from Apple.  Except as expressly stated in this notice,no other rights or licenses, express or implied, are granted by Apple herein,including but not limited to any patent rights that may be infringed by yourderivative works or by other works in which the Apple Software may beincorporated.The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NOWARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIEDWARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULARPURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR INCOMBINATION WITH YOUR PRODUCTS.IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL ORCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTEGOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/ORDISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OFCONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IFAPPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.Copyright (C) 2008 Apple Inc. All Rights Reserved.*/#import "PVRTexture.h"#import "Texture2D.h"		// cocos2d integration#define PVR_TEXTURE_FLAG_TYPE_MASK	0xffstatic char gPVRTexIdentifier[4] = "PVR!";enum{	kPVRTextureFlagTypePVRTC_2 = 24,	kPVRTextureFlagTypePVRTC_4};typedef struct _PVRTexHeader{	uint32_t headerLength;	uint32_t height;	uint32_t width;	uint32_t numMipmaps;	uint32_t flags;	uint32_t dataLength;	uint32_t bpp;	uint32_t bitmaskRed;	uint32_t bitmaskGreen;	uint32_t bitmaskBlue;	uint32_t bitmaskAlpha;	uint32_t pvrTag;	uint32_t numSurfs;} PVRTexHeader;@implementation PVRTexture@synthesize name = _name;@synthesize width = _width;@synthesize height = _height;@synthesize internalFormat = _internalFormat;@synthesize hasAlpha = _hasAlpha;// cocos2d integration@synthesize retainName = _retainName;- (BOOL)unpackPVRData:(NSData *)data{	BOOL success = FALSE;	PVRTexHeader *header = NULL;	uint32_t flags, pvrTag;	uint32_t dataLength = 0, dataOffset = 0, dataSize = 0;	uint32_t blockSize = 0, widthBlocks = 0, heightBlocks = 0;	uint32_t width = 0, height = 0, bpp = 4;	uint8_t *bytes = NULL;	uint32_t formatFlags;		header = (PVRTexHeader *)[data bytes];		pvrTag = CFSwapInt32LittleToHost(header->pvrTag);	if ((uint32_t)gPVRTexIdentifier[0] != ((pvrTag >>  0) & 0xff) ||		(uint32_t)gPVRTexIdentifier[1] != ((pvrTag >>  8) & 0xff) ||		(uint32_t)gPVRTexIdentifier[2] != ((pvrTag >> 16) & 0xff) ||		(uint32_t)gPVRTexIdentifier[3] != ((pvrTag >> 24) & 0xff))	{		return FALSE;	}		flags = CFSwapInt32LittleToHost(header->flags);	formatFlags = flags & PVR_TEXTURE_FLAG_TYPE_MASK;		if (formatFlags == kPVRTextureFlagTypePVRTC_4 || formatFlags == kPVRTextureFlagTypePVRTC_2)	{		[_imageData removeAllObjects];				if (formatFlags == kPVRTextureFlagTypePVRTC_4)			_internalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;		else if (formatFlags == kPVRTextureFlagTypePVRTC_2)			_internalFormat = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;			_width = width = CFSwapInt32LittleToHost(header->width);		_height = height = CFSwapInt32LittleToHost(header->height);				if (CFSwapInt32LittleToHost(header->bitmaskAlpha))			_hasAlpha = TRUE;		else			_hasAlpha = FALSE;				dataLength = CFSwapInt32LittleToHost(header->dataLength);				bytes = ((uint8_t *)[data bytes]) + sizeof(PVRTexHeader);				// Calculate the data size for each texture level and respect the minimum number of blocks		while (dataOffset < dataLength)		{			if (formatFlags == kPVRTextureFlagTypePVRTC_4)			{				blockSize = 4 * 4; // Pixel by pixel block size for 4bpp				widthBlocks = width / 4;				heightBlocks = height / 4;				bpp = 4;			}			else			{				blockSize = 8 * 4; // Pixel by pixel block size for 2bpp				widthBlocks = width / 8;				heightBlocks = height / 4;				bpp = 2;			}						// Clamp to minimum number of blocks			if (widthBlocks < 2)				widthBlocks = 2;			if (heightBlocks < 2)				heightBlocks = 2;			dataSize = widthBlocks * heightBlocks * ((blockSize  * bpp) / 8);						[_imageData addObject:[NSData dataWithBytes:bytes+dataOffset length:dataSize]];						dataOffset += dataSize;						width = MAX(width >> 1, 1);			height = MAX(height >> 1, 1);		}				  		success = TRUE;	}		return success;}- (BOOL)createGLTexture{	int width = _width;	int height = _height;	NSData *data;	GLenum err;		if ([_imageData count] > 0)	{		if (_name != 0)			glDeleteTextures(1, &_name);				glGenTextures(1, &_name);		glBindTexture(GL_TEXTURE_2D, _name);	}		[Texture2D applyTexParameters];	// cocos2d integration	for (NSUInteger i=0; i < [_imageData count]; i++)	{		data = [_imageData objectAtIndex:i];		glCompressedTexImage2D(GL_TEXTURE_2D, i, _internalFormat, width, height, 0, [data length], [data bytes]);				err = glGetError();		if (err != GL_NO_ERROR)		{			NSLog(@"Error uploading compressed texture level: %d. glError: 0x%04X", i, err);			return FALSE;		}				width = MAX(width >> 1, 1);		height = MAX(height >> 1, 1);	}		[_imageData removeAllObjects];		return TRUE;}- (id)initWithContentsOfFile:(NSString *)path{	if((self = [super init]))	{		NSData *data = [NSData dataWithContentsOfFile:path];				_imageData = [[NSMutableArray alloc] initWithCapacity:10];				_name = 0;		_width = _height = 0;		_internalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;		_hasAlpha = FALSE;				_retainName = NO; // cocos2d integration		if (!data || ![self unpackPVRData:data] || ![self createGLTexture])		{			[self release];			self = nil;		}	}		return self;}- (id)initWithContentsOfURL:(NSURL *)url{	if (![url isFileURL])	{		[self release];		return nil;	}		return [self initWithContentsOfFile:[url path]];}+ (id)pvrTextureWithContentsOfFile:(NSString *)path{	return [[[self alloc] initWithContentsOfFile:path] autorelease];}+ (id)pvrTextureWithContentsOfURL:(NSURL *)url{	if (![url isFileURL])		return nil;		return [PVRTexture pvrTextureWithContentsOfFile:[url path]];}- (void)dealloc{	[_imageData release];		if (_name != 0 && ! _retainName )		glDeleteTextures(1, &_name);		[super dealloc];}@end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费视频| 欧美乱妇20p| 水野朝阳av一区二区三区| 久久精品免视看| 欧美三级韩国三级日本一级| 处破女av一区二区| 蜜臂av日日欢夜夜爽一区| 亚洲欧美另类久久久精品| 欧美mv和日韩mv国产网站| 色老汉av一区二区三区| 国产乱淫av一区二区三区| 午夜电影网亚洲视频| 亚洲三级理论片| 国产亚洲成年网址在线观看| 91精品久久久久久蜜臀| 在线观看亚洲成人| 波多野结衣在线一区| 精品在线亚洲视频| 日本亚洲天堂网| 亚洲成人免费在线| 亚洲精品中文字幕乱码三区| 国产精品久久久久毛片软件| 国产亚洲欧美一级| www欧美成人18+| 日韩精品一区二区三区在线观看| 欧美三级视频在线| 一本色道综合亚洲| 91同城在线观看| 99国产欧美久久久精品| av网站一区二区三区| 国产一区视频在线看| 久久精品国产亚洲aⅴ| 日韩国产在线观看| 亚洲成a人在线观看| 亚洲综合无码一区二区| 一区二区三区免费网站| 中文字幕亚洲电影| 国产精品电影院| 国产精品女同一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美日韩一区二区三区免费看| 国产不卡高清在线观看视频| 精东粉嫩av免费一区二区三区| 婷婷开心久久网| 天天综合色天天综合| 天天操天天干天天综合网| 香蕉成人啪国产精品视频综合网 | 丝袜美腿亚洲色图| 视频在线观看国产精品| 免费观看日韩电影| 韩国精品免费视频| 成人午夜在线免费| thepron国产精品| 99久久精品99国产精品| 99久久免费精品高清特色大片| 91蜜桃网址入口| 欧美午夜在线一二页| 欧美精品777| 日韩欧美亚洲国产精品字幕久久久| 精品美女一区二区三区| 久久久综合激的五月天| 国产欧美一区二区精品忘忧草| 中文字幕欧美区| 夜夜嗨av一区二区三区四季av| 香蕉影视欧美成人| 久久99精品久久久久久动态图| 国产精品综合网| 色狠狠桃花综合| 911精品国产一区二区在线| 日韩视频一区二区三区在线播放| 精品国产一区二区三区四区四| 久久精品一区二区| 一区二区三区免费看视频| 日韩极品在线观看| 国v精品久久久网| 一本到三区不卡视频| 91麻豆精品久久久久蜜臀| 国产区在线观看成人精品| 亚洲激情自拍偷拍| 黑人巨大精品欧美一区| 日本黄色一区二区| 精品国产电影一区二区| 综合av第一页| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人午夜电影网站| 欧美另类videos死尸| 国产精品天干天干在线综合| 亚洲成人第一页| 成人午夜私人影院| 56国语精品自产拍在线观看| 欧美极品美女视频| 奇米影视一区二区三区小说| 国产成人精品免费看| 欧美日韩国产乱码电影| 欧美激情一区二区三区蜜桃视频| 亚洲aaa精品| 99麻豆久久久国产精品免费| 欧美一级高清大全免费观看| 亚洲欧洲日韩在线| 麻豆精品新av中文字幕| 色94色欧美sute亚洲13| 久久精品水蜜桃av综合天堂| 丝袜诱惑亚洲看片| 91国内精品野花午夜精品| 精品国精品自拍自在线| 亚洲狠狠爱一区二区三区| 成人综合在线网站| 久久蜜桃香蕉精品一区二区三区| 午夜精品视频在线观看| 97精品超碰一区二区三区| 久久看人人爽人人| 韩国欧美国产一区| 日韩欧美国产小视频| 午夜精品一区二区三区免费视频 | 99久久免费国产| 久久久国产精华| 毛片不卡一区二区| 欧美二区在线观看| 亚洲第一福利视频在线| 色香色香欲天天天影视综合网| 久久精品一区二区三区四区| 精品一区二区久久久| 91精品国产91久久久久久最新毛片| 一区二区在线观看不卡| 成人h版在线观看| 欧美激情一区不卡| 国产麻豆欧美日韩一区| 欧美r级电影在线观看| 男女男精品网站| 日韩一区二区三区免费看 | 亚洲女与黑人做爰| 国产成a人亚洲精| 国产日韩精品一区二区浪潮av| 久久99精品久久久久| 日韩欧美一区二区在线视频| 午夜激情久久久| 7777精品伊人久久久大香线蕉超级流畅| 亚洲精品中文在线观看| 色哟哟国产精品| 亚洲国产精品人人做人人爽| 色婷婷亚洲精品| 一区二区三区在线视频观看 | 欧美日韩国产中文| 婷婷开心激情综合| 欧美一区二区三区婷婷月色| 日韩av成人高清| 日韩三级视频在线观看| 国内国产精品久久| 国产精品丝袜久久久久久app| www.爱久久.com| 亚洲免费在线视频一区 二区| 色婷婷亚洲精品| 婷婷开心久久网| 日韩无一区二区| 国产精品 日产精品 欧美精品| 久久久久亚洲综合| av成人老司机| 亚洲一区中文在线| 欧美一区二区三区四区在线观看| 精品一区二区国语对白| 国产亚洲精品aa午夜观看| 91免费国产在线观看| 日韩高清在线电影| 久久免费精品国产久精品久久久久| 99精品视频中文字幕| 亚洲午夜久久久久久久久电影院| 91精品国产入口在线| 国产九色sp调教91| 一区二区三区自拍| 制服丝袜日韩国产| 国产精品影视网| 亚洲最大的成人av| 精品美女一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 五月天精品一区二区三区| 久久夜色精品国产欧美乱极品| 成人国产精品免费观看视频| 亚洲成av人片一区二区| 国产日韩v精品一区二区| 在线观看国产91| 精品写真视频在线观看| 国产精品国产馆在线真实露脸| 欧美精品色综合| 成人开心网精品视频| 日本亚洲欧美天堂免费| 亚洲丝袜制服诱惑| wwww国产精品欧美| 在线免费观看不卡av| 国产精品一区二区x88av| 亚洲精品乱码久久久久久黑人| 精品免费视频一区二区| 91久久久免费一区二区| 国产精品一区在线| 亚洲成人av资源| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品久久影院| 日韩欧美成人午夜| 色婷婷狠狠综合| 国产精品一区在线观看乱码| 五月综合激情婷婷六月色窝|