Wednesday, May 30, 2012

3D rotate for RenderScript - rsMatrixRotate()

Refer to the RenderScript.rs in the example "Perform transform of Translate and Rotate on RenderScript", the rsMatrixRotate() function define the rotation.
void rsMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z)

rsMatrixRotate() modified


Modify RenderScript.rs of last exercise "Draw circle in Android RenderScript".
//declare RendorScript Version
#pragma version(1)

//declare package
#pragma rs java_package_name(com.exercise.AndroidRenderScript);

//include graphics library
#include "rs_graphics.rsh"

rs_mesh my_rs_mesh;

float rotation;

void init(){
 rotation = 0.0f;
}

int root(){
 //set background color
 rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 
 //Transform something
 rs_matrix4x4 matrix;
 rsMatrixLoadIdentity(&matrix);
 rsMatrixTranslate(&matrix, 100.0f, 100.0f, 0.0f);
 rsMatrixRotate(&matrix, rotation++, 1.0f, 1.0f, 1.0f);
 rsgProgramVertexLoadModelMatrix(&matrix);
 
 //draw something
 rsgDrawMesh(my_rs_mesh);
 
 //repeat 20ms
 return 20;
}


No comments: