因此,我想在变形后找到该三角形的红色顶点的NDC坐标。我将其用作原型,以确定如何在正在开发的游戏中添加和定位健康栏(有其他方法吗?)。
坐标未正确计算(它们在某种程度上接近正确,并遵循相似的路径,但不正确)。我不知道为什么。
float[] modelMatrix = new float[16];
float[] modelViewMatrix = new float[16];
float[] modelViewProjectionMatrix = new float[16];
// Position/rotate the triangle and draw it.
Matrix.setIdentityM(modelMatrix, 0);
Matrix.rotateM(modelMatrix, 0, angleInDegrees, 0.0f, 1.0f, 1.0f);
Matrix.translateM(modelMatrix, 0, -0.3f, 0.3f, 0.0f);
multiplyMM(modelViewMatrix, 0, mViewMatrix, 0, modelMatrix, 0);
multiplyMM(modelViewProjectionMatrix, 0, mProjectionMatrix, 0, modelViewMatrix, 0);
glUniformMatrix4fv(mMVPMatrixHandle, 1, false, modelViewProjectionMatrix, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
// The vertex data defined for the red vertex
float[] redVertex = { triangleVertexData[0], triangleVertexData[1],
triangleVertexData[2], 1.0f };
float[] ndcCoordinates = new float[4];
multiplyMV(ndcCoordinates, 0, modelViewProjectionMatrix, 0, redVertex, 0);
三角形顶点数据定义为(为简化起见,删除了此帖子的颜色数据):
final float[] triangleVertexData = {
-0.5f, -0.25f, 0.0f, // Red vertex
0.5f, -0.25f, 0.0f, // Blue vertex
0.0f, 0.5f, 0.0f // Green vertex
};