2010-07-21 3 views
0

OpenGL을 사용하여 ipad 앱을 개발 중입니다. 내 응용 프로그램에서 기본적으로 사용자의 손가락 동작에 따라 회전 할 수있는 기본 모양, 즉 3D 큐브를 그립니다. 이제이 입방체의 일부를 채색해야합니다. 나는이 모양을 채색하기 위해 사용자가 선택한 표면을 선택하기를 원합니다.OpenGL에서 색상 배열 처리

그래서 내가하려는 것은 ... 사용자가 색상을 변경할 때마다 glColorPointer() 배열을 변경하려고합니다. 그러나 위선적 인 말로는 성공할 수 없습니다. 나는 동적으로이 색상 배열을 생성하는 방법을

const GLubyte *cubeFace1; 
const GLubyte *cubeFace2; 

NSMutableArray *cubeFace1Arr = [[NSMutableArray alloc] initWithCapacity:20 ]; 
for (i = 0; i < 16; i++) { 
// black color. value of '255' will change according to the user's selection of color 
    [cubeFace1Arr addObject: [NSNumber numberWithInt:255]]; 
} 

NSMutableArray *cubeFace2Arr = [[NSMutableArray alloc] initWithCapacity:20 ]; 
for (i = 0; i < 16; i++) { 
// white color. value of '0' will change according to the user's selection of color 
    [cubeFace2Arr addObject: [NSNumber numberWithInt:0]]; 
} 

cubeFace1 = cubeFace1Arr; // warning: assignment from incompatible pointer type 
cubeFace1 = cubeFace2Arr; // warning: assignment from incompatible pointer type 


glColorPointer(4, GL_UNSIGNED_BYTE, 0, cubeFace1); 
glColorPointer(4, GL_UNSIGNED_BYTE, 0, cubeFace2); 

그래서, 내 기본 문제 : 다음은 샘플 나는

샘플 코드를하려고 노력하고 무엇? 또는 내가이 용기를 제거하는 방법 .. !!

미리 감사드립니다.

답변

1

(대부분의 OpenGL 호출과 마찬가지로) glColorPointer는 Objective-C NSArray 객체가 아닌 일반 C 배열을 원합니다.

struct RGBAColor { 
    GLubyte r, g, b, a; 
}; 

struct RGBAColor cubeFace1[16]; 
for(int i = 0; i < 16; i++) { 
    cubeFace1[i].r = 255; 
    cubeFace1[i].g = 255; 
    cubeFace1[i].b = 255; 
    cubeFace1[i].a = 255; 
} 
glColorPointer(4, GL_UNSIGNED_BYTE, 0, cubeFace1); 

documentation을 확인하시기 바랍니다.

+0

YO .... 도움이 필요합니다. 정확히 내가 필요로하는 것이 아니라 샘플을 사용하여 원했던대로 할 수 있었고 실제로 문서를 참조해야합니다. 고마워요. – rohanparekh

+0

안녕하세요 zpasternack : 이전 답변에 대한 답장을 보내 주셔서 감사합니다. 당신이 내 의심을 한 번 더 볼 수 있다면 정말 좋겠다 .. !! 좋은 하루 되세요. – rohanparekh