java – 转换后获取opengl中对象的位置

我想在OpenGL中获取对象的坐标.我画一个四边形.然后我做了一些转换,如GL11.glTranslatef()和GL11.glRotatef().

GL11.glBegin(GL11.GL_QUADS); // draw independent triangles
GL11.glColor3f(0.0f, 1.0f, 0.0f);
GL11.glVertex3f(-0.2f, 0.0f, -2.0f);    // lower left vertex
GL11.glVertex3f( 0.2f, 0.0f, -2.0f);    // upper vertex
GL11.glVertex3f( 0.2f, 0.4f, -2.0f);    // lower right verte
GL11.glVertex3f( -0.2f, 0.4f, -2.0f);
GL11.glEnd(); 

转换后是否可以获得顶点的位置?

最佳答案 当然.将相同的变换(平移和旋转)应用于位置矢量,该矢量保存对象的位置.结果将是变换后对象的位置.如果要将3d co-ords转换为2d屏幕指令,您可能需要在某些时候进行一些缩放.但这非常可行.它涉及基于对象的z深度的缩放.

编辑:

 private final FloatBuffer buffer = EngineUtil.createBuffer( 16 );

      /**
    * @return Current modelview matrix (column-major)
    */
   public Matrix getModelviewMatrix() {
      return getMatrix( GL11.GL_MODELVIEW_MATRIX );
   }

   /**
    * @return Current projection matrix (column-major)
    */
   public Matrix getProjectionMatrix() {
      return getMatrix( GL11.GL_PROJECTION_MATRIX );
   }

   /**
    * Retrieves the specified matrix.
    * @param name Matrix name
    */
   private Matrix getMatrix( int name ) {
      // Retrieve specified matrix buffer
      buffer.rewind();
      GL11.glGetFloat( name, buffer );

      // Convert to array
      final float[] array = new float[ 16 ];
      buffer.get( array );

      // Convert to matrix
      return new Matrix( array );
   }

但是你可能只想使用比LWJGL更完整的东西.谷歌vecmath,处理,团结. 3D是棘手的,似乎没有真正的捷径,所以只要继续尝试,你就会得到它.

点赞