Jamey McElveen
Jamey McElveen

Reputation: 18305

how can I retrieve the current position of the vertices after they have been transformed?

How can I retrieve the current position of the vertices after they have been transformed? I have the following code....

How can I get the position of the "modelVertices" after the transform has been applied?

I am really after the screen coordinates so I can tell if a vert has been clicked by the mouse.


glMatrixMode(GL_MODELVIEW);

// save model transform matrix
GLfloat currentModelMatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, currentModelMatrix);

// clear the model transform matrix
glLoadIdentity();

// rotate the x and y axis of the model transform matrix
glRotatef(rotateX, 1.0f, 0.0f, 0.0f);
glRotatef(rotateY, 0.0f, 1.0f, 0.0f);

// reapply the previous transforms
glMultMatrixf(currentModelMatrix);

glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

// since each vertes is defined in 3D instead of 2D parameter one has been 
// upped from 2 to 3 to respect this change.
glVertexPointer(3, GL_FLOAT, 0, modelVertices);
glEnableClientState(GL_VERTEX_ARRAY);

Upvotes: 2

Views: 640

Answers (2)

genpfault
genpfault

Reputation: 52084

You could use the feedback buffer.

Upvotes: 1

shoosh
shoosh

Reputation: 78914

GLU has the function gluProject() and gluUnProject():

http://www.opengl.org/sdk/docs/man/xhtml/gluProject.xml

If your platform doesn't have GLU you can always grab the code for MESA and see how it is implemented.

Upvotes: 2

Related Questions