当前位置:  编程技术>移动开发
本页文章导读:
    ▪OpenGL超级宝典札记7        OpenGL超级宝典笔记7 第十二章 交互式图形 学习使用选择和反馈,这两个都是OpenGL的强大特性,它们能够让用户与场景进行交互。选择和挑选用于在场景中的某个区域中确认一个物体,它所.........
    ▪ objective-c 字符串各种处置        objective-c 字符串各种处理 内容简要: 1、创建常量字符串。  2、创建空字符串,给予赋值。 3、在以上方法中,提升速度:initWithString方法 4、用标准c创建字符串:initWithCString方法。 5、创.........
    ▪ 经过URL Scheme打开Settings应用       通过URL Scheme打开Settings应用 程序间通信的实现描述了通过URL Scheme的方式在应用中打开其他应用,本文则是用这种方式打开内置的Settings应用。   [[UIApplication sharedApplication] openURL:[NSURL URLWithSt.........

[1]OpenGL超级宝典札记7
    来源: 互联网  发布时间: 2014-02-18
OpenGL超级宝典笔记7


第十二章 交互式图形

学习使用选择和反馈,这两个都是OpenGL的强大特性,它们能够让用户与场景进行交互。选择和挑选用于在场景中的某个区域中确认一个物体,它所使用的是OpenGL坐标而不是窗口坐标。反馈返回在窗口中实际绘制图元的宝贵信息。

a) 选择 实际上是一种渲染模式,但在选择模式下,像素并没有被实际复制到帧缓冲区。反之,在可视区中绘制的图元将在一个选择缓冲区中产生点记录。通常做法是为一组图元命名,在选择模式下出现一次点击事件,就把名字压入栈中。选择模式:glRenderMode(GL_SELECTION);还有另外两种模式:GL_FEEDBACK和GL_RENDER模式。

b) 挑选 使用选择时,当我们根据鼠标位置创建和使用一个经过修改的可视区域时,就会产生挑选事件。glPickMatrix函数用于创建一个矩阵,描述新的可视区域。首先保存可视化区域,然后把渲染模式切换到选择模式,对可视区域进行修改,只包含鼠标下面的区域,并调用RenderScene函数对场景进行重绘。在场景进行重绘之后,我们再次调用glRenderScene函数把OpenGL恢复为正常的渲染模式,并获取所产生的点击记录的数量。

c) 反馈 和选择一样也是一种渲染模式,将信息写入到反馈缓冲区中,提示场景将如何被渲染。这信息包括了用窗口坐标表示的经过转换的顶点数据、根据光照计算产生的颜色数据以及纹理数据。反馈缓冲区是一个浮点值数组,它是用glFeedback函数指定的。反馈缓冲区包含了一个标记列表,接着是顶点数据以及可能出现的颜色和纹理数据。

 

第十三章 遮挡查询,消除不必要的工作

在渲染复杂的场景时,我们有时候会渲染一些实际上不可见的东西,从而浪费硬件资源。通过在物体四周绘制一个边框,或其他一些简单的边界区域。我们可以在付出很低代价的情况下知道物体在场景中的大致边界。如果场景中的遮挡物隐藏了这个边框,它也将遮挡实际的物体。通过对一个物体的边框进行查询,我们可以计算需要绘制多少像素。

a) 边框 遮挡检测背后的理论是:如果一个物体的边界区域(bounding volume)并不可见,那么这个物体也不可见。最简单的边界区域是立方体,又称边框。它由8个顶点、6个面组成。

b) 对查询对象进行查询 依次对每个物体的查询对象进行检查,并决定是否绘制这个球体。.调用glGetQueryObjectiv函数来判断那个表示通过测试的计数器的值是否为0,如果是就不需要绘制这个物体。

c) 最佳实践 首先绘制遮挡物,然后在场景中有条件地绘制剩余的物体。如果程序允许,应该按照从前向后的顺序对被遮挡物进行排序。

1楼hunter_wwq昨天 22:49学的这么快!

    
[2] objective-c 字符串各种处置
    来源: 互联网  发布时间: 2014-02-18
objective-c 字符串各种处理

内容简要:

1、创建常量字符串。 

2、创建空字符串,给予赋值。

3、在以上方法中,提升速度:initWithString方法

4、用标准c创建字符串:initWithCString方法。

5、创建格式化字符串:占位符(由一个%加一个字符组成)

6、创建临时字符串。

7、判断字符串为空。

9、是否以”test”开头;是否以”.move”结尾。

10、比较两个字符串。

11、声明一个可变字符;长度是40个字符。

12、修改可变字符;先声明一个可变字符 myFriend;长度30。

13、在一个字符串后面附加一个新的字符串。

14、字符串转换整数值。

15、从文件读取字符串:initWithContentsOfFile方法。

16、写字符串到文件:writeToFile方法

17、改变字符串的大小写。

18、在串中搜索子串。

19、抽取子串。

20、扩展路径。

21、文件扩展名。

22、在已有字符串后面添加字符。

23、在已有字符串中按照所给出范围和长度删除字符。

24、在已有字符串后面在所指定的位置中插入给出的字符串。

25、将已有的空符串换成其它的字符串。

26、按照所给出的范围,和字符串替换的原有的字符。

27、判断字符串内是否还包含别的字符串(前缀,后缀)。


----------------------------------------------------------------------------------------------------------------------------------------------------

1、创建常量字符串。
 NSString *astring = @"This is a String!";


 2、创建空字符串,给予赋值。

 NSString *astring = [[NSString alloc] init];
 astring = @"This is a String!";
 NSLog(@"astring:%@",astring);
 [astring release];


3、在以上方法中,提升速度:initWithString方法

 NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
 NSLog(@"astring:%@",astring);
 [astring release];


4、用标准c创建字符串:initWithCString方法

char *Cstring = "This is a String!";
NSString *astring = [[NSString alloc] initWithCString:Cstring];
NSLog(@"astring:%@",astring);
[astring release];


5、创建格式化字符串:占位符(由一个%加一个字符组成)

    int i = 1;
    int j = 2;
    NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%d.This is %i string!",i,j]];
    NSLog(@"astring:%@",astring);
    [astring release];

6、创建临时字符串

    NSString *astring;
    astring = [NSString stringWithCString:"This is a temporary string"];
    NSLog(@"astring:%@",astring); 


7、判断字符串为空

NSString *urlString = [urlInput stringValue];
if (!urlString) { 
NSLog( @”NO INPUT.” );

if ([urlString length] == 0 ) {
NSLog( @”NO INPUT.” );




9、是否以”test”开头;是否以”.move”结尾;

NSString *fileName = @”test.move”;

  if ([fileName hasPrefix:@"test"]) {

  NSLog(@”has Test String !”);

  }else{

  NSLog(@”don’t have Test”);

  }


  [fileName hasSuffix:@".move"]?NSLog(@”Yes it got a .Mov in its end”):NSLog(@”no it has no .mov string”);




10、比较两个字符串:

strcmp函数

    char string1[] = "string!";
    char string2[] = "string!";
    if(strcmp(string1, string2) = = 0)
    {
        NSLog(@"1");
    }

isEqualToString方法    
    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 isEqualToString:astring02];
    NSLog(@"result:%d",result);


compare方法(comparer返回的三种值)    
    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"This is a String!";    
    BOOL result = [astring01 compare:astring02] = = NSOrderedSame;    
    NSLog(@"result:%d",result);    
    NSOrderedSame 判断两者内容是否相同

    

    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"this is a String!";
    BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;    
    NSLog(@"result:%d",result);

    NSOrderedAscending 判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)



    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;    
    NSLog(@"result:%d",result);     
    NSOrderedDescending 判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)



不考虑大 小写比较字符串1
    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;    
    NSLog(@"result:%d",result);

NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)


不考虑大小写比较字符串2
    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 compare:astring02
                            options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;    
    NSLog(@"result:%d",result);     
 
NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写NSNumericSearch:比较字符串的字符个数,而不是字符值。


11、声明一个可变字符;长度是40个字符;

  NSMutableString *myMutableString;

  myMutableString = [NSMutableString stringWithCapacity:40];

  NSString *myName = @”Leo”;

  

  [myMutableString appendString:@"Hello ,there"];

  [myMutableString appendFormat:@" i am %@",myName];

  NSLog(@”this is NSMutableString: %@”,myMutableString);

  //this is NSMutableString: Hello ,there i am Leo;

  

12、修改可变字符;先声明一个可变字符 myFriend;长度30;


  NSMutableString *myGirlFriend;

  myGirlFriend = [NSMutableString stringWithCapacity:30];

  //然后给字符加入一些内容;

  [myGirlFriend appendString:@"Here are my GF:Carol Sophia Ashley Helen and Yoyo"];

  NSLog(@”%@”,myGirlFriend);

  //声名一个变动范围(NSRange);

  NSRange joneRange;

  joneRange = [myGirlFriend rangeOfString:@"Helen "];

  //下面:就是从myFriend字符中配对,如果有相等的内容就删除了;

  [myGirlFriend deleteCharactersInRange:joneRange];

  NSLog(@”%@”,myGirlFriend);

13、在一个字符串后面附加一个新的字符串

NSString *a = @"a";

NSString *b = [a stringByAppendingString:@"b"];//b变量的值为“ab”

14、字符串转换整数值

NSString *age = @"36";

if([age intValue]>35){

}

15、从文件读取字符串:initWithContentsOfFile方法
    NSString *path = @"astring.text";
    NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
    NSLog(@"astring:%@",astring);
    [astring release];

16、写字符串到文件:writeToFile方法
    NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
    NSLog(@"astring:%@",astring);
    NSString *path = @"astring.text";    
    [astring writeToFile: path atomically: YES];
    [astring release];   


17、改变字符串的大小写

    NSString *string1 = @"A String"; 
    NSString *string2 = @"String"; 
    NSLog(@"string1:%@",[string1 uppercaseString]);//大写
    NSLog(@"string2:%@",[string2 lowercaseString]);//小写
    NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小


18、在串中搜索子串

    NSString *string1 = @"This is a string";
    NSString *string2 = @"string";
    NSRange range = [string1 rangeOfString:string2];
    int location = range.location;
    int leight = range.length;
    NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i,Leight:%i",location,leight]];
    NSLog(@"astring:%@",astring);
    [astring release];


19、抽取子串

    //-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringToIndex:3];
    NSLog(@"string2:%@",string2);


    //-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringFromIndex:3];
    NSLog(@"string2:%@",string2);
 
 
    //-substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];
    NSLog(@"string2:%@",string2);
 
 
20、扩展路径
 
    NSString *Path = @"~/NSData.txt";
    NSString *absolutePath = [Path stringByExpandingTildeInPath];
    NSLog(@"absolutePath:%@",absolutePath);
    NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);
 
 
 
21、文件扩展名
    NSString *Path = @"~/NSData.txt";
    NSLog(@"Extension:%@",[Path pathExtension]);

 
22、在已有字符串后面添加字符  
    NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];
    //[String1 appendString:@", I will be adding some character"];
    [String1 appendFormat:[NSString stringWithFormat:@", I will be adding some character"]];
    NSLog(@"String1:%@",String1);

23、在已有字符串中按照所给出范围和长度删除字符

     NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];
     [String1 deleteCharactersInRange:NSMakeRange(0, 5)];
     NSLog(@"String1:%@",String1);
 
 
 
24、在已有字符串后面在所指定的位置中插入给出的字符串
 
    //-insertString: atIndex:
    NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];
    [String1 insertString:@"Hi! " atIndex:0];
    NSLog(@"String1:%@",String1);
 

25、将已有的空符串换成其它的字符串
 
    //-setString:
    NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];
    [String1 setString:@"Hello Word!"];
    NSLog(@"String1:%@",String1);
 
26、按照所给出的范围,和字符串替换的原有的字符
 
    //-setString:
    NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];
    [String1 replaceCharactersInRange:NSMakeRange(0, 4) withString:@"That"];
    NSLog(@"String1:%@",String1);
 
27、判断字符串内是否还包含别的字符串(前缀,后缀)
    //01:检查字符串是否以另一个字符串开头- (BOOL) hasPrefix: (NSString *) aString;
    NSString *String1 = @"NSStringInformation.txt";
    [String1 hasPrefix:@"NSString"] = = 1 ?  NSLog(@"YES") : NSLog(@"NO");
    [String1 hasSuffix:@".txt"] = = 1 ?  NSLog(@"YES") : NSLog(@"NO");
    //02:查找字符串某处是否包含其它字符串 - (NSRange) rangeOfString: (NSString *) aString,这一点前面在串中搜索子串用到过;


    
[3] 经过URL Scheme打开Settings应用
    来源: 互联网  发布时间: 2014-02-18
通过URL Scheme打开Settings应用

程序间通信的实现描述了通过URL Scheme的方式在应用中打开其他应用,本文则是用这种方式打开内置的Settings应用。

 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];

 

以下是内置的Settings的URL Scheme:

 

About — prefs:root=General&path=About

Accessibility — prefs:root=General&path=ACCESSIBILITY

Airplane Mode On — prefs:root=AIRPLANE_MODE

Auto-Lock — prefs:root=General&path=AUTOLOCK

Brightness — prefs:root=Brightness

Bluetooth — prefs:root=General&path=Bluetooth

Date & Time — prefs:root=General&path=DATE_AND_TIME

FaceTime — prefs:root=FACETIME

General — prefs:root=General

Keyboard — prefs:root=General&path=Keyboard

iCloud — prefs:root=CASTLE

iCloud Storage & Backup — prefs:root=CASTLE&path=STORAGE_AND_BACKUP

International — prefs:root=General&path=INTERNATIONAL

Location Services — prefs:root=LOCATION_SERVICES

Music — prefs:root=MUSIC

Music Equalizer — prefs:root=MUSIC&path=EQ

Music Volume Limit — prefs:root=MUSIC&path=VolumeLimit

Network — prefs:root=General&path=Network

Nike + iPod — prefs:root=NIKE_PLUS_IPOD

Notes — prefs:root=NOTES

Notification — prefs:root=NOTIFICATIONS_ID

Phone — prefs:root=Phone

Photos — prefs:root=Photos

Profile — prefs:root=General&path=ManagedConfigurationList

Reset — prefs:root=General&path=Reset

Safari — prefs:root=Safari

Siri — prefs:root=General&path=Assistant

Sounds — prefs:root=Sounds

Software Update — prefs:root=General&path=SOFTWARE_UPDATE_LINK

Store — prefs:root=STORE

Twitter — prefs:root=TWITTER

Usage — prefs:root=General&path=USAGE

VPN — prefs:root=General&path=Network/VPN

Wallpaper — prefs:root=Wallpaper

Wi-Fi — prefs:root=WIFI

 

需要注意的是:这种方式只支持iOS 5.0的系统,从iOS 5.1开始,苹果已经移除了prefs:这个URL Scheme。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
建站其它 iis7站长之家
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3