private void getRevolution(){
//set the Object's rotation
this.getBasePoint();
Matrix.setIdentityM(mModelMatrix, 0);
// Matrix.translateM(mModelMatrix, 0, Op.base_X, Op.base_Y, Op.base_Z);
// Matrix.translateM(mModelMatrix, 0, 0, 0, 0);
setRotateEulerM(mModelMatrix, 0,
(x_Angle_Degree + x_Angle_Rotate),
(y_Angle_Degree + y_Angle_Rotate),
(z_Angle_Degree + z_Angle_Rotate)
);
Log.d("" + name + "'s RoateEulerM = ",
"x- " +(x_Angle_Rotate) + "y- " + (y_Angle_Rotate) + "z- " + (z_Angle_Rotate));
Matrix.multiplyMM(GLMatrix.mMVPMatrix, 0, GLMatrix.mVMatrix, 0, mModelMatrix, 0);
Matrix.multiplyMM(GLMatrix.mMVPMatrix, 0, GLMatrix.mProjMatrix, 0, GLMatrix.mMVPMatrix, 0);
}
public void draw(){
GLES20.glUseProgram(mProgram);
//get Rotation
Op.getRevolution();
Op.getRotation();
switch(mode){
case TEXTURE_MODE:
{
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureData_Handle);
GLES20.glVertexAttribPointer(mPosition_Handle, 3, GLES20.GL_FLOAT, false, 12, vertexBuffer);
GLES20.glEnableVertexAttribArray(mPosition_Handle);
GLES20.glVertexAttribPointer(mTexture_Handle, 2, GLES20.GL_FLOAT, false, 8, textureBuffer);
GLES20.glEnableVertexAttribArray(mTexture_Handle);
}
break;
case COLOR_MODE:
{
GLES20.glVertexAttribPointer(mPosition_Handle, 3, GLES20.GL_FLOAT, false, 12, vertexBuffer);
GLES20.glEnableVertexAttribArray(mPosition_Handle);
GLES20.glUniform4fv(mColor_Handle, 1, color, 0);
}
break;
}
일단 객체를 자전시키려고 하는데, 이게 아무리해도 뷰의 원점을 중심으로 회전을 하네요.
객체 마다 별도의 모델메트릭스를 사용한다고 하길래 별도의 메트릭스를 정의 했는데 별 효과가 없네요..
MatrixMultiply 하는데 문제가 있나요?
GLMatrix.*Matrix 는 전체 프로그램에서 공유하는 메트릭스들입니다.