0
매트릭스 trasformations의 OpenGL ES :모델 내 렌더러에 onDrawFrame이 코드를 작성 2.0
[...]
setIdentityM(modelMatrix, 0);
translateM(modelMatrix, 0, 40f, 0f, 25f);
rotateM(modelMatrix, 0, 90f, 1f, 0f, 0f);
scaleM(modelMatrix, 0, 6f, 6f, 6f);
multiplyMM(MVPmatrix, 0, viewProjectionMatrix, 0, modelMatrix, 0);
myHouse1coords = myHouse1.getWorldCoords(modelMatrix); //myHouse1coords is an array
[...]
은 내가 내 "집"에 적용되는 trasformation을 추적하는 코드를 사용
[...]
private final static float[] COORDINATES = { //x, y, z, r, g, b
0f, 0f, 0f, 1f, 0f, 0f, //bottom
2f, 0f, 0f, 0f, 1f, 0f, //dx
0f, 1f, 0f, 0f, 0f, 1f, //sx
2f, 1f, 0f, 1f, 1f, 1f //top
};
public float[] getWorldCoords(float[] matrix)
{
int i = 0;
float[] coordinates1 = new float[4];
float[] coordinates2 = new float[4];
float[] coordinates3 = new float[4];
float[] coordinates4 = new float[4];
do {
coordinates1[i] = COORDINATES[i];
i++;
} while (i < 3);
i = 0;
coordinates1[3] = 0f;
do {
coordinates2[i] = COORDINATES[i + 6];
i++;
} while (i < 3);
i = 0;
coordinates2[3] = 0f;
do {
coordinates3[i] = COORDINATES[i + 12];
i++;
} while (i < 3);
i = 0;
coordinates3[3] = 0f;
do {
coordinates4[i] = COORDINATES[i + 18];
i++;
} while (i < 3);
coordinates4[3] = 0f;
float[] finalCoordinates1 = new float[4];
float[] finalCoordinates2 = new float[4];
float[] finalCoordinates3 = new float[4];
float[] finalCoordinates4 = new float[4];
multiplyMV(finalCoordinates1, 0, matrix, 0, coordinates1, 0);
multiplyMV(finalCoordinates2, 0, matrix, 0, coordinates2, 0);
multiplyMV(finalCoordinates3, 0, matrix, 0, coordinates3, 0);
multiplyMV(finalCoordinates4, 0, matrix, 0, coordinates4, 0);
float[] coordinates = new float[16];
i = 0;
int j = 0;
do {
coordinates[i] = finalCoordinates1[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates2[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates3[j];
i++;
j++;
} while (j < 4);
j = 0;
do {
coordinates[i] = finalCoordinates4[j];
i++;
j++;
} while (j < 4);
Log.d("DRAGTESTRENDERER", "coords[4]" + coordinates[4]);
return coordinates;
}
[...]
문제는 제가 logcat에서이 코드를 실행할 때 12.0을 얻을 수 있습니다. 마치 집에 규모 정보를 적용한 것처럼, 왜 번역할까요? 회전시키다. 물론.