2009-08-06 2 views
0

좋아, 그래서 아이폰에 대한 OpenGL ES 응용 프로그램에서 일하고, 그리고 흥미로운 문제가 만났습니다.포인터 계산 및 malloc'ed 배열 탐색

필자는 세부 수준과 구 좌표의 범위에 따라 구의 정점, 법선 및 텍스처 좌표를 계산하는 기능을 가지고 있습니다.

//After I figure out the size of the vertices: 
GLfloat* vertices = (GLfloat *) (malloc(sizeof(GLfloat) * arraySize))); 

//Later on when I'm computing vertices... 
GLfloat* vertPosition = vertices; 

vertPosition[0] = px; 
vertPosition[1] = py; 
vertPosition[2] = pz; 
vertPosition += 3; 

이 재앙으로 밝혀졌다 :

원래 배열에 정점을 저장하면이 같은 것을 보았다. 나는 & T 로고와 같은 것으로 끝났다. 조금 더 많은 작업 :-) 나는 카운터를 추가 발견하고 그 인덱스에 배열 고정 된 모든 사용 :

vertPosition[(vertexCount * 3) + 0] = px; 
vertPosition[(vertexCount * 3) + 1] = py; 
vertPosition[(vertexCount * 3) + 2] = pz; 
vertexCount++; 

내 질문이 있습니다 : 어떤 임시 포인터를 사용하고 전방을 움직이는 일이? 제가 지금 효율적으로 얻은 것입니까, 아니면 포인터 연산이 더 좋을까요?

답변

2

게시 한 내용의 모습에서 정확히 동일해야합니다. 내가 생각할 수있는 첫 번째 일은 버그가 다른 곳의 코드에 있다는 것입니다.

내가 생각할 수있는 유일한 또 다른 사실은 verts의 배열을 취하는 대신 실제적으로 coords 배열을 취할 것이고 coords가 그 다음에 차이를 설명 할 수있는 패딩을 가질 수도 있다는 것입니다.