이 코드의 glDrawElements()에 EXC_BAD_ACCESS가 표시되지만 코드의 아래쪽 블록이있는 경우에만 표시됩니다. 나는 포인터가 없거나 일반적으로이 오류를 일으킬 수있는 다른 것들을 발견하지 못하기 때문에 필자가 빠진 개념적 개념이어야한다고 생각하고 있습니다.어떻게 glDrawElements()가 텍스처로 그리는 동안 EXC_BAD_ACCESS를 발생시킬 수 있습니까?
glScalef(6, 6, 6);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3 ,GL_FLOAT, 0, model_verts);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, model_normals);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(num_tex_coords*2, GL_FLOAT, 0, tex_coords);
glDrawElements(GL_TRIANGLES, num_model_indices0, GL_UNSIGNED_SHORT, &model_indices0);
glDrawElements(GL_TRIANGLES, num_model_indices1, GL_UNSIGNED_SHORT, &model_indices1);
glDrawElements(GL_TRIANGLES, num_model_indices2, GL_UNSIGNED_SHORT, &model_indices2);
glDrawElements(GL_TRIANGLES, num_model_indices3, GL_UNSIGNED_SHORT, &model_indices3);
이 코드는 내 텍스처를 설정하고 어떤 라인에서도 실패하지 않습니다.
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glBlendFunc(GL_ONE, GL_SRC_COLOR);
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
NSString *path = [[NSBundle mainBundle] pathForResource:@"booktex" ofType:@"jpg"];
NSData *texData = [[NSData alloc] initWithContentsOfFile:path];
UIImage *image = [[UIImage alloc] initWithData:texData];
if (image == nil)
NSLog(@"Do real error checking here");
GLuint width = CGImageGetWidth(image.CGImage);
GLuint height = CGImageGetHeight(image.CGImage);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
imageData = malloc(height * width * 4);
context = CGBitmapContextCreate(imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextClearRect(context, CGRectMake(0, 0, width, height));
CGContextTranslateCTM(context, 0, height - height);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image.CGImage);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);
tex_coords는 .obj 파일에서 구문 분석하는 vt 값을 제공합니다. num_tex_coords는 해당 행의 수이므로 배열에서 값의 수를 얻기 위해 2를 곱합니다. 니펫은 CONST 플로트 tex_coords [] [2] = { \t \t {0.25, 0.375} \t \t {0.375, 0.25} , \t \t {0.25, 0.25} , \t \t {0.375, 0.25} 이고 \t \t {0.25, 0.375}, \t \t {0.375, 0.375} –