Noobie: я могу построить и нарисовать сетку (загруженную из файла STL), масштабировать ее соответствующим образом и центрировать сетку на экране, но я не могу переместить сетку относительно источника. Часто координаты сетки, скажем, все в октанте + ve, поэтому я хочу переместить его так, чтобы его центр находился в начале координат, и затем я мог бы повернуть его вокруг.
Я делаю что-то не так, потому что всякий раз, когда я перемещаю меш, источник перемещается вместе с ним. Кто-нибудь может спасти мой мозг и сказать, что я делаю не так?
public void onSurfaceChanged(GL10 gl, int w, int h) {
gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluPerspective(gl, 45f, (float)w / (float)h, 0.1f, 5f * fMesh_Z_Extent;
gl.glTranslatef(0, 0, 0 - (2.5f * fMesh_Z_Extent));
float f1, f2, f3;
// set f1, f2, f3 to move centre of model to sit on the origin
// this works perfectly, but the origin has moved with the mesh! Grrrr.
gl.glTranslatef(f1, f2, f3);
gl.glMatrixMode(GL10.GL_MODELVIEW); //Select The Modelview Matrix
gl.glLoadIdentity();
}
public void onDrawFrame(GL10 gl) {
gl.glClearColor(0f, 0f, 0f, 1f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// initialise mesh here
gl.glColor4f(8f, 255f, 128f, 1f);
gl.glDrawElements(GL10.GL_TRIANGLES, Global.indices.length,
GL10.GL_UNSIGNED_SHORT, Global.indexBuffer);
gl.glRotatef(3.0f, 0.0f, 1.0f, 0.0f);
// Disable the vertices buffer.
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}