gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:51 24 4
gpt4 key购买 nike

我想在 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();

是否可以获取变换后顶点的位置?

最佳答案

当然。将相同的变换(平移和旋转)应用于保存对象位置的位置 vector 。结果将是变换后对象的位置。如果您想将 3d 坐标转换为 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 更完整的东西。 Google vecmath,处理,统一。 3D 很棘手,似乎没有真正的捷径,所以只要继续尝试,您就会成功。

关于java - 转换后获取对象在 opengl 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com