我有具有以下結構的一個OpenGL ES基於應用程式:共享STRUCT類之間信息 - 目標C - 的OpenGL ES
- 我解析從包含多個對象(使用的NSXMLParser)的DAE文件頂點。
- 當我解析每一組頂點時,我創建一個對象(sceneObject),並在此對象中設置頂點數組以匹配解析的頂點。然後,我打算將這些sceneObjects添加到OpenGL ES呈現的對象數組中。
起初,我採取了使用NSArrays存儲頂點數據的方法,但是據我所知,OpenGL命令(如glvertexpointer)不接受NSObject的值,積屑瘤,而不是需要原始值(glfloats和gluints等) 。
我現在試圖採取一種結構方法,而不是將NSObjects轉換回對象類中的GL原始值。這是我解析頂點信息的代碼:
if (floatArray) {
if (currentlyParsing == kVerticeInformation) {
if (currentParserTagType == kGeometry) {
//NSLog(@"Loaded Vertices %@", string);
NSArray * nums = [string componentsSeparatedByString:@" "];
culmunativeCount += [nums count];
//NSLog(@"Culm Count is %d", culmunativeCount);
[fullParseString appendString : string];
if (checkSumCount <= culmunativeCount) {
//NSLog(@"Full Parse String is %@", fullParseString);
NSArray * finishedArray = [fullParseString componentsSeparatedByString:@" "];
//NSLog(@"Finihsed ARray is %d", [finishedArray count]);
[finishedParsingArray addObjectsFromArray:finishedArray];
//NSLog(@" FINISHED PARSING = %d", [finishedParsingArray count]);
NSUInteger baseIndex;
for (baseIndex=0; baseIndex <[finishedParsingArray count]; baseIndex +=3) {
NSString * xPoint = [finishedParsingArray objectAtIndex:baseIndex];
NSDecimalNumber * errorCheckX = [NSDecimalNumber decimalNumberWithString:xPoint];
float x = [errorCheckX floatValue];
NSString * yPoint = [finishedParsingArray objectAtIndex:baseIndex +1];
NSDecimalNumber * errorCheckY = [NSDecimalNumber decimalNumberWithString:yPoint];
float y = [errorCheckY floatValue];
NSString * zPoint = [finishedParsingArray objectAtIndex:baseIndex+2];
NSDecimalNumber * errorCheckZ = [NSDecimalNumber decimalNumberWithString:zPoint];
float z = [errorCheckZ floatValue];
Vertex3D vertexItem = {x,y,z}
//NSLog(@"Vertices stored are %f, %f, %f", x,y,z);
}
currentlyParsing = kNilSetting;
checkSumCount = 0;
[finishedParsingArray removeAllObjects];
//[finishedArray release];
culmunativeCount = 0;
[fullParseString setString:@""];
}
}
}
}
正如你所看到的,我現在用的解析頂點信息每次創建一個Vertex3D C結構。
我的問題是:
- 我怎麼會那麼創建這些個人ÇVertex3D結構的數組?
- 我該如何將這個結構數組傳遞給我的sceneObject?
簡單,但沒有很好的解決方案! 以您的結構作爲參數並創建對象數組的子類NSObject。然後在接收器類中創建結構數組 – SAKrisT 2012-02-16 11:10:55
不知道這有助於 - 你不能添加nsobjects到c結構? – GuybrushThreepwood 2012-02-16 12:15:55