How do i get the Center position of opengl object iphone?
In my project.. I moving the opengl object randomly.. if i click on that opengl object.. i need to get the center position of that object.. Here is my Code..
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if (objShowing == YES) {
NSLog(@"touch count %d",[touches count]);
UITouch *touchA,*touchB;
CGPoint pointA, pointB;
if ([touches count] == 1)
{
touchA = [[touches allObjects] objectAtIndex:0];
pointA = [touchA locationInView:self];
pointB = [touchA previousLocationInView:self];
float yDistance = pointA.y - pointB.y;
float xDistance = pointA.x - pointB.x;
GLfloat totalRotation = sqrt(xDistance*xDistance + yDistance*yDistance);
CATransform3D temporaryMatrix = CATransform3DRotate(currentCalculatedMatrix, totalRotation * M_PI / 180.0,
((xDistance/totalRotation) * currentCalculatedMatrix.m11 + (yDistance/totalRotation) * currentCalculatedMatrix.m12),
((xDistance/totalRotation) * currentCalculatedMatrix.m21 + (yDistance/totalRotation) * currentCalculatedMatrix.m22),
((xDistance/totalRotation) * currentCalculatedMatrix.m31 + (yDistance/totalRotation) * currentCalculatedMatrix.m32));
if ((temporaryMatrix.m11 >= -50.0) && (temporaryMatrix.m11 <= 50.0))
currentCalculatedMatrix = temporaryMatrix;
else
{
}
[self convert3DTransform:¤tCalculatedMatrix toMatrix:matrix];
[self adjustView];
}
}
}
-(void)adjustView{
NSLog(@"adjusting View");
[EAGLContext setCurrentContext:context];
glMatrixMode(GL_MODELVIEW);
glEnable(GL_NORMALIZE);
glLoadIdentity();
glScalef(_scale, _scale, 1.0f);
glRotatef(-90, 0.0f, 0.0f, 1.0f);
glRotatef(180, 0, 1, 0);
glClearColor(0.0f, 0.0f, 0.0f, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//Finally load matrix
glMultMatrixf(matrix);
glRotatef(0, 0, 0, 1);
glRotatef(-90, 1, 0, 0);
drawTeapot(codesiz);
glPopMatrix();
glBindFramebufferOES开发者_StackOverflow中文版(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
OpenGL has no "persistency". Things are drawn, things are forgotten. Basically OpenGL is just the pens used to draw on some paper called "framebuffer". It's nothing more. Because of that what you ask is not possible with OpenGL itself.
What you need to do is keep track of all the things you draw in a separate structure yourself and do such tests and queries, like the one you're asking about, on this structure YOU maintain.
精彩评论