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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? texture2d.m

?? Compressed file has password
?? M
字號:
/*===== IMPORTANT =====This is sample code demonstrating API, technology or techniques in development.Although this sample code has been reviewed for technical accuracy, it is notfinal. Apple is supplying this information to help you plan for the adoption ofthe technologies and programming interfaces described herein. This informationis subject to change, and software implemented based on this sample code shouldbe tested with final operating system software and final documentation. Newerversions of this sample code may be provided with future seeds of the API ortechnology. For information about updates to this and other developerdocumentation, view the New & Updated sidebars in subsequent documentationseeds.=====================File: Texture2D.mAbstract: Creates OpenGL 2D textures from images or text.Version: 1.6Disclaimer: 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 <OpenGLES/ES1/glext.h>#import "Texture2D.h"#import "PVRTexture.h"//CONSTANTS:#define kMaxTextureSize	 1024//CLASS IMPLEMENTATIONS:// Default Min/Mag texture filterstatic ccTexParams _texParams = { GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE };static ccTexParams _texParamsCopy;@implementation Texture2D@synthesize contentSize=_size, pixelFormat=_format, pixelsWide=_width, pixelsHigh=_height, name=_name, maxS=_maxS, maxT=_maxT;- (id) initWithData:(const void*)data pixelFormat:(Texture2DPixelFormat)pixelFormat pixelsWide:(NSUInteger)width pixelsHigh:(NSUInteger)height contentSize:(CGSize)size{	GLint					saveName;	if((self = [super init])) {		glGenTextures(1, &_name);		glGetIntegerv(GL_TEXTURE_BINDING_2D, &saveName);		glBindTexture(GL_TEXTURE_2D, _name);		[Texture2D applyTexParameters];				switch(pixelFormat) {						case kTexture2DPixelFormat_RGBA8888:				glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);				break;			case kTexture2DPixelFormat_RGB565:				glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, data);				break;			case kTexture2DPixelFormat_A8:				glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, data);				break;			default:				[NSException raise:NSInternalInconsistencyException format:@""];					}		glBindTexture(GL_TEXTURE_2D, saveName);			_size = size;		_width = width;		_height = height;		_format = pixelFormat;		_maxS = size.width / (float)width;		_maxT = size.height / (float)height;	}						return self;}- (void) dealloc{#if DEBUG	NSLog(@"deallocing: %@", self);#endif	if(_name)		glDeleteTextures(1, &_name);		[super dealloc];}- (NSString*) description{	return [NSString stringWithFormat:@"<%@ = %08X | Name = %i | Dimensions = %ix%i | Coordinates = (%.2f, %.2f)>", [self class], self, _name, _width, _height, _maxS, _maxT];}@end@implementation Texture2D (Image)	- (id) initWithImage:(UIImage *)uiImage{	NSUInteger				width,							height,							i;	CGContextRef			context = nil;	void*					data = nil;;	CGColorSpaceRef			colorSpace;	void*					tempData;	unsigned int*			inPixel32;	unsigned short*			outPixel16;	BOOL					hasAlpha;	CGImageAlphaInfo		info;	CGAffineTransform		transform;	CGSize					imageSize;	Texture2DPixelFormat    pixelFormat;	CGImageRef				image;	BOOL					sizeToFit = NO;			image = [uiImage CGImage];		if(image == NULL) {		[self release];		NSLog(@"Image is Null");		return nil;	}		info = CGImageGetAlphaInfo(image);	hasAlpha = ((info == kCGImageAlphaPremultipliedLast) || (info == kCGImageAlphaPremultipliedFirst) || (info == kCGImageAlphaLast) || (info == kCGImageAlphaFirst) ? YES : NO);	size_t bpp = CGImageGetBitsPerComponent(image);	if(CGImageGetColorSpace(image)) {		if(hasAlpha || bpp >= 8)			pixelFormat = kTexture2DPixelFormat_RGBA8888;		else			pixelFormat = kTexture2DPixelFormat_RGB565;	} else  //NOTE: No colorspace means a mask image		pixelFormat = kTexture2DPixelFormat_A8;			imageSize = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image));	transform = CGAffineTransformIdentity;	width = imageSize.width;		if((width != 1) && (width & (width - 1))) {		i = 1;		while((sizeToFit ? 2 * i : i) < width)			i *= 2;		width = i;	}	height = imageSize.height;	if((height != 1) && (height & (height - 1))) {		i = 1;		while((sizeToFit ? 2 * i : i) < height)			i *= 2;		height = i;	}	while((width > kMaxTextureSize) || (height > kMaxTextureSize)) {		width /= 2;		height /= 2;		transform = CGAffineTransformScale(transform, 0.5f, 0.5f);		imageSize.width *= 0.5f;		imageSize.height *= 0.5f;	}		switch(pixelFormat) {				case kTexture2DPixelFormat_RGBA8888:			colorSpace = CGColorSpaceCreateDeviceRGB();			data = malloc(height * width * 4);			context = CGBitmapContextCreate(data, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);			CGColorSpaceRelease(colorSpace);			break;		case kTexture2DPixelFormat_RGB565:			colorSpace = CGColorSpaceCreateDeviceRGB();			data = malloc(height * width * 4);			context = CGBitmapContextCreate(data, width, height, 8, 4 * width, colorSpace, kCGImageAlphaNoneSkipLast | kCGBitmapByteOrder32Big);			CGColorSpaceRelease(colorSpace);			break;					case kTexture2DPixelFormat_A8:			data = malloc(height * width);			context = CGBitmapContextCreate(data, width, height, 8, width, NULL, kCGImageAlphaOnly);			break;						default:			[NSException raise:NSInternalInconsistencyException format:@"Invalid pixel format"];	} 	CGContextClearRect(context, CGRectMake(0, 0, width, height));	CGContextTranslateCTM(context, 0, height - imageSize.height);		if(!CGAffineTransformIsIdentity(transform))		CGContextConcatCTM(context, transform);	CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image), CGImageGetHeight(image)), image);	//Convert "RRRRRRRRRGGGGGGGGBBBBBBBBAAAAAAAA" to "RRRRRGGGGGGBBBBB"	if(pixelFormat == kTexture2DPixelFormat_RGB565) {		tempData = malloc(height * width * 2);		inPixel32 = (unsigned int*)data;		outPixel16 = (unsigned short*)tempData;		for(i = 0; i < width * height; ++i, ++inPixel32)			*outPixel16++ = ((((*inPixel32 >> 0) & 0xFF) >> 3) << 11) | ((((*inPixel32 >> 8) & 0xFF) >> 2) << 5) | ((((*inPixel32 >> 16) & 0xFF) >> 3) << 0);		free(data);		data = tempData;			}	self = [self initWithData:data pixelFormat:pixelFormat pixelsWide:width pixelsHigh:height contentSize:imageSize];		CGContextRelease(context);	free(data);		return self;}@end@implementation Texture2D (Text)- (id) initWithString:(NSString*)string fontName:(NSString*)name fontSize:(CGFloat)size{	CGSize dim = [string sizeWithFont: [UIFont fontWithName:name size:size]];	return [self initWithString:string dimensions:dim alignment:UITextAlignmentCenter fontName:name fontSize:size];}- (id) initWithString:(NSString*)string dimensions:(CGSize)dimensions alignment:(UITextAlignment)alignment fontName:(NSString*)name fontSize:(CGFloat)size{	NSUInteger				width,							height,							i;	CGContextRef			context;	void*					data;	CGColorSpaceRef			colorSpace;	UIFont *				font;		font = [UIFont fontWithName:name size:size];	width = dimensions.width;	if((width != 1) && (width & (width - 1))) {		i = 1;		while(i < width)		i *= 2;		width = i;	}	height = dimensions.height;	if((height != 1) && (height & (height - 1))) {		i = 1;		while(i < height)		i *= 2;		height = i;	}		colorSpace = CGColorSpaceCreateDeviceGray();	data = calloc(height, width);	context = CGBitmapContextCreate(data, width, height, 8, width, colorSpace, kCGImageAlphaNone);	CGColorSpaceRelease(colorSpace);			CGContextSetGrayFillColor(context, 1.0f, 1.0f);	CGContextTranslateCTM(context, 0.0f, height);	CGContextScaleCTM(context, 1.0f, -1.0f); //NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential	UIGraphicsPushContext(context);		[string drawInRect:CGRectMake(0, 0, dimensions.width, dimensions.height) withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:alignment];	UIGraphicsPopContext();		self = [self initWithData:data pixelFormat:kTexture2DPixelFormat_A8 pixelsWide:width pixelsHigh:height contentSize:dimensions];		CGContextRelease(context);	free(data);		return self;}@end@implementation Texture2D (Drawing)- (void) drawAtPoint:(CGPoint)point {	GLfloat		coordinates[] = { 0.0f,	_maxT,								_maxS,	_maxT,								0.0f,	0.0f,								_maxS,	0.0f };	GLfloat		width = (GLfloat)_width * _maxS,				height = (GLfloat)_height * _maxT;#if 0	GLfloat		vertices[] = {	-width / 2 + point.x,	-height / 2 + point.y,	0.0f,								width / 2 + point.x,	-height / 2 + point.y,	0.0f,								-width / 2 + point.x,	height / 2 + point.y,	0.0f,								width / 2 + point.x,	height / 2 + point.y,	0.0f };	#else // anchor is done by cocos2d automagically	GLfloat		vertices[] = {	point.x,			point.y,	0.0f,								width + point.x,	point.y,	0.0f,								point.x,			height  + point.y,	0.0f,								width + point.x,	height  + point.y,	0.0f };#endif		glBindTexture(GL_TEXTURE_2D, _name);	glVertexPointer(3, GL_FLOAT, 0, vertices);	glTexCoordPointer(2, GL_FLOAT, 0, coordinates);	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);}- (void) drawInRect:(CGRect)rect{	GLfloat	 coordinates[] = {  0.0f,	_maxT,								_maxS,	_maxT,								0.0f,	0.0f,								_maxS,	0.0f  };	GLfloat	vertices[] = {	rect.origin.x,							rect.origin.y,							0.0f,							rect.origin.x + rect.size.width,		rect.origin.y,							0.0f,							rect.origin.x,							rect.origin.y + rect.size.height,		0.0f,							rect.origin.x + rect.size.width,		rect.origin.y + rect.size.height,		0.0f };		glBindTexture(GL_TEXTURE_2D, _name);	glVertexPointer(3, GL_FLOAT, 0, vertices);	glTexCoordPointer(2, GL_FLOAT, 0, coordinates);	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);}@end@implementation Texture2D (PVRTC)-(id) initWithPVRTCData: (const void*)data level:(int)level bpp:(int)bpp hasAlpha:(BOOL)hasAlpha length:(int)length{	GLint					saveName;	if((self = [super init])) {		glGenTextures(1, &_name);		glGetIntegerv(GL_TEXTURE_BINDING_2D, &saveName);		glBindTexture(GL_TEXTURE_2D, _name);		[Texture2D applyTexParameters];				GLenum format;		GLsizei size = length * length * bpp / 8;		if(hasAlpha) {			format = (bpp == 4) ? GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG : GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;		} else {			format = (bpp == 4) ? GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG : GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;		}		if(size < 32) {			size = 32;		}		glCompressedTexImage2D(GL_TEXTURE_2D, level, format, length, length, 0, size, data);				glBindTexture(GL_TEXTURE_2D, saveName);				_size = CGSizeMake(length, length);		_width = length;		_height = length;		_maxS = 1.0f;		_maxT = 1.0f;	}						return self;}-(id) initWithPVRTCFile: (NSString*) file{	if( (self = [super init]) ) {		PVRTexture *pvr = [[PVRTexture alloc] initWithContentsOfFile:file];		pvr.retainName = YES;	// don't dealloc texture on release				_name = pvr.name;	// texture id		_maxS = 1.0f;		_maxT = 1.0f;		_width = pvr.width;		// width		_height = pvr.height;	// height		_size = CGSizeMake(_width, _height);		[pvr release];	}	return self;}@end//// Used to apply MIN/MAG filter//@implementation Texture2D (GLFilter)+(void) setTexParameters: (ccTexParams*) texParams{	_texParams = *texParams;}+(ccTexParams) texParameters{	return _texParams;}+(void) applyTexParameters{	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _texParams.minFilter );	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _texParams.magFilter );	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _texParams.wrapS );	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _texParams.wrapT );}+(void) restoreTexParameters{	_texParams = _texParamsCopy;}+(void) saveTexParameters{	_texParamsCopy = _texParams;}+(void) setAliasTexParameters{	_texParams.magFilter = _texParams.minFilter = GL_NEAREST;}+(void) setAntiAliasTexParameters{	_texParams.magFilter = _texParams.minFilter = GL_LINEAR;}@end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产精华液| 久久国产成人午夜av影院| 亚洲国产精品视频| 国产精品一区二区x88av| 一本大道久久a久久精品综合| 欧美蜜桃一区二区三区| 国产精品免费看片| 麻豆精品国产91久久久久久| 99久久er热在这里只有精品66| 欧美一区二区二区| 亚洲精品日产精品乱码不卡| 国产麻豆精品95视频| 欧美日本一区二区在线观看| 国产精品国产自产拍高清av王其 | 日韩国产欧美在线播放| 不卡的电视剧免费网站有什么| 日韩欧美电影在线| 亚洲成人激情自拍| 色综合 综合色| 中文字幕一区二区在线观看| 国产精品自拍毛片| 精品1区2区在线观看| 亚洲mv大片欧洲mv大片精品| 91丨porny丨首页| 国产精品嫩草影院av蜜臀| 国产一区二区女| 精品国产一区久久| 免费成人在线视频观看| 337p亚洲精品色噜噜噜| 亚洲一区二区在线播放相泽| 色狠狠一区二区三区香蕉| 国产精品久久影院| 播五月开心婷婷综合| 国产精品污www在线观看| 国产一区二区三区蝌蚪| 久久久久久综合| 国产精品系列在线观看| 欧美国产日韩精品免费观看| 国产一区二区成人久久免费影院 | 极品少妇xxxx偷拍精品少妇| 日韩一卡二卡三卡四卡| 久久综合综合久久综合| 精品日韩一区二区| 国产麻豆精品久久一二三| 亚洲美女少妇撒尿| 在线观看亚洲精品| 视频在线观看国产精品| 欧美一级免费大片| 激情文学综合网| 国产欧美一区二区三区在线看蜜臀| 国产激情精品久久久第一区二区| 国产三级欧美三级日产三级99| 国产九九视频一区二区三区| 中文字幕+乱码+中文字幕一区| 岛国精品在线观看| 亚洲美女淫视频| 日韩欧美你懂的| 成人免费三级在线| 亚洲免费观看视频| 欧美放荡的少妇| 国产在线精品国自产拍免费| 国产精品美女久久久久久久久 | 亚洲综合色自拍一区| 欧美精品免费视频| 国产精品一区不卡| 一级特黄大欧美久久久| 日韩欧美美女一区二区三区| 国产99精品国产| 亚洲va中文字幕| 国产欧美视频一区二区三区| 欧美午夜片在线观看| 久久精品国产精品亚洲精品 | 9191久久久久久久久久久| 麻豆精品精品国产自在97香蕉| 国产欧美一区二区三区沐欲| 91激情在线视频| 激情六月婷婷久久| 亚洲一区二区高清| 久久女同精品一区二区| 欧美综合亚洲图片综合区| 看片网站欧美日韩| 亚洲综合激情网| 日本一区二区三区久久久久久久久不| 欧美在线观看视频在线| 国产盗摄女厕一区二区三区| 亚洲午夜精品在线| 国产精品丝袜91| 欧美一二三四在线| 欧美性一级生活| av电影在线观看完整版一区二区| 美女视频黄 久久| 亚洲电影一区二区三区| 国产欧美日韩在线| 精品女同一区二区| 欧美日韩一区二区三区视频| 成人91在线观看| 美国精品在线观看| 亚洲va欧美va国产va天堂影院| 国产精品乱子久久久久| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩美少妇| 欧美日韩aaaaaa| 欧美亚洲免费在线一区| 97se狠狠狠综合亚洲狠狠| 韩日欧美一区二区三区| 蜜臀av一区二区在线免费观看| 一区二区三区在线视频播放| 国产精品护士白丝一区av| 久久久久久久综合色一本| 日韩女优毛片在线| 欧美一区二区福利视频| 欧美一区二区成人6969| 日韩午夜三级在线| 在线91免费看| 日韩欧美二区三区| 日韩精品资源二区在线| 日韩欧美在线一区二区三区| 91麻豆精品国产无毒不卡在线观看 | 国产a视频精品免费观看| 激情五月婷婷综合网| 国产乱子伦视频一区二区三区| 久久精品国产77777蜜臀| 久久99久久久久久久久久久| 久久精工是国产品牌吗| 国产综合一区二区| 国产电影一区二区三区| 国产精品系列在线播放| 成人高清免费观看| 91在线免费视频观看| 一本大道久久精品懂色aⅴ| 欧洲一区在线电影| 欧美疯狂性受xxxxx喷水图片| 7777精品伊人久久久大香线蕉经典版下载 | 日本久久电影网| av一本久道久久综合久久鬼色| 国产精品影视天天线| 久久国产欧美日韩精品| 国产成人av一区二区三区在线观看| 精品一二三四区| 国产乱码一区二区三区| 国产麻豆午夜三级精品| 精品一二三四区| 国产黄色精品网站| 暴力调教一区二区三区| av一区二区三区| 91小视频在线免费看| 欧美日韩国产小视频在线观看| 欧美人牲a欧美精品| 欧美一区二区三区男人的天堂| 日韩欧美资源站| 中文字幕一区二区在线观看| 一区二区在线电影| 亚洲a一区二区| 紧缚奴在线一区二区三区| 国产成人自拍网| 色综合天天做天天爱| 欧美无人高清视频在线观看| 欧美天天综合网| 在线观看成人免费视频| 欧美日韩一级二级| 欧美一级生活片| 日本一二三不卡| 亚洲va欧美va国产va天堂影院| 国产综合色在线| 在线观看亚洲精品| 精品国产伦理网| 久久久99久久精品欧美| 天堂va蜜桃一区二区三区漫画版| 久久精品理论片| 在线免费观看日本一区| 欧美精品久久99| 日韩一区欧美一区| 天天影视涩香欲综合网| 国产精品综合二区| 在线免费观看日本欧美| 中文幕一区二区三区久久蜜桃| 亚洲影视资源网| 国产激情视频一区二区三区欧美 | 成人免费视频视频在线观看免费| 盗摄精品av一区二区三区| 欧美午夜精品免费| 日韩一区在线看| 国产一区久久久| 欧美欧美午夜aⅴ在线观看| 亚洲国产成人自拍| 久久av老司机精品网站导航| 一本到三区不卡视频| 国产色一区二区| 青青国产91久久久久久| 欧美日韩国产影片| 亚洲视频电影在线| 国产成人综合视频| 日韩视频一区二区三区在线播放| 亚洲与欧洲av电影| 97国产一区二区| 国产精品伦一区| 国产一区二区精品久久99| 欧美精品一区二区三区在线播放 | 国产欧美一区视频| 久久国产精品99久久人人澡|