Merge change 5984
* changes: Update rollo and support functions. Includes mockup of some new ui concepts.
This commit is contained in:
@@ -5,10 +5,58 @@
|
||||
|
||||
int main(void* con, int ft, int launchID)
|
||||
{
|
||||
int rowCount;
|
||||
int x;
|
||||
int y;
|
||||
int row;
|
||||
int col;
|
||||
int imageID;
|
||||
int tx1;
|
||||
int ty1;
|
||||
int tz1;
|
||||
int tx2;
|
||||
int ty2;
|
||||
int tz2;
|
||||
int rot;
|
||||
int rotStep;
|
||||
int tmpSin;
|
||||
int tmpCos;
|
||||
int iconCount;
|
||||
int pressure;
|
||||
|
||||
renderTriangleMesh(con, NAMED_MeshCard);
|
||||
renderTriangleMesh(con, NAMED_MeshTab);
|
||||
|
||||
iconCount = 38;//loadI32(0, 1);
|
||||
rotStep = 20 * 0x10000;
|
||||
pressure = loadI32(0, 2);
|
||||
|
||||
rowCount = 4;
|
||||
rot = (-20 + loadI32(0, 0)) * 0x10000;
|
||||
|
||||
while (iconCount) {
|
||||
tmpSin = sinx(rot);
|
||||
tmpCos = cosx(rot);
|
||||
|
||||
tx1 = tmpSin * 8 - tmpCos;
|
||||
tx2 = tx1 + tmpCos * 2;
|
||||
|
||||
tz1 = tmpCos * 8 + tmpSin + pressure;
|
||||
tz2 = tz1 - tmpSin * 2;
|
||||
|
||||
for (y = 0; (y < rowCount) && iconCount; y++) {
|
||||
ty1 = (y * 0x30000) - 0x48000;
|
||||
ty2 = ty1 + 0x20000;
|
||||
|
||||
drawQuad(tx1, ty1, tz1,
|
||||
tx2, ty1, tz2,
|
||||
tx2, ty2, tz2,
|
||||
tx1, ty2, tz1);
|
||||
iconCount--;
|
||||
}
|
||||
rot = rot + rotStep;
|
||||
}
|
||||
|
||||
//renderTriangleMesh(con, NAMED_MeshCard);
|
||||
//renderTriangleMesh(con, NAMED_MeshTab);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,6 +48,12 @@ public class RolloRS {
|
||||
initRS();
|
||||
}
|
||||
|
||||
public void setPosition(float dx, float pressure) {
|
||||
mAllocStateBuf[0] += (int)(dx);
|
||||
mAllocStateBuf[2] = (int)(pressure * 0x40000);
|
||||
mAllocState.data(mAllocStateBuf);
|
||||
}
|
||||
|
||||
|
||||
private Resources mRes;
|
||||
private RenderScript mRS;
|
||||
@@ -63,23 +69,13 @@ public class RolloRS {
|
||||
private RenderScript.ProgramVertex mPV;
|
||||
private ProgramVertexAlloc mPVAlloc;
|
||||
|
||||
private RenderScript.Allocation mAllocEnv;
|
||||
private RenderScript.Allocation mAllocPos;
|
||||
private int[] mAllocStateBuf;
|
||||
private RenderScript.Allocation mAllocState;
|
||||
//private RenderScript.Allocation mAllocPV;
|
||||
private RenderScript.TriangleMesh mMeshCard;
|
||||
private RenderScript.TriangleMesh mMeshTab;
|
||||
|
||||
private float[] mBufferPos;
|
||||
//private float[] mBufferPV;
|
||||
|
||||
private void initNamed() {
|
||||
mMeshTab = RolloMesh.createTab(mRS);
|
||||
mMeshTab.setName("MeshTab");
|
||||
mMeshCard = RolloMesh.createCard(mRS);
|
||||
mMeshCard.setName("MeshCard");
|
||||
Log.e("rs", "Done loading strips");
|
||||
|
||||
mRS.samplerBegin();
|
||||
mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
|
||||
RenderScript.SamplerValue.LINEAR_MIP_LINEAR);
|
||||
@@ -122,6 +118,8 @@ public class RolloRS {
|
||||
mPV.setName("PV");
|
||||
mPV.bindAllocation(0, mPVAlloc.mAlloc);
|
||||
|
||||
|
||||
|
||||
mPVAlloc.setupProjectionNormalized(320, 480);
|
||||
//mPVAlloc.setupOrthoNormalized(320, 480);
|
||||
mRS.contextBindProgramVertex(mPV);
|
||||
@@ -131,6 +129,7 @@ public class RolloRS {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void initRS() {
|
||||
mRS.scriptCBegin();
|
||||
mRS.scriptCSetClearColor(0.0f, 0.7f, 0.0f, 1.0f);
|
||||
@@ -138,6 +137,11 @@ public class RolloRS {
|
||||
mRS.scriptCSetRoot(true);
|
||||
mScript = mRS.scriptCCreate();
|
||||
|
||||
mAllocStateBuf = new int[] {0, 38, 0};
|
||||
mAllocState = mRS.allocationCreatePredefSized(
|
||||
RenderScript.ElementPredefined.USER_I32, mAllocStateBuf.length);
|
||||
mScript.bindAllocation(mAllocState, 0);
|
||||
setPosition(0, 0);
|
||||
|
||||
mRS.contextBindRootScript(mScript);
|
||||
}
|
||||
|
||||
@@ -74,6 +74,11 @@ public class RolloView extends RSSurfaceView {
|
||||
if (act == ev.ACTION_UP) {
|
||||
ret = false;
|
||||
}
|
||||
float x = ev.getX();
|
||||
x = (x - 180) / 40;
|
||||
//Log.e("rs", Float(x).toString());
|
||||
|
||||
mRender.setPosition(x, ev.getPressure());
|
||||
//mRender.newTouchPosition((int)ev.getX(), (int)ev.getY());
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -307,6 +307,60 @@ extern "C" void drawRect(int32_t x1, int32_t x2, int32_t y1, int32_t y2)
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
}
|
||||
|
||||
extern "C" void drawQuad(int32_t x1, int32_t y1, int32_t z1,
|
||||
int32_t x2, int32_t y2, int32_t z2,
|
||||
int32_t x3, int32_t y3, int32_t z3,
|
||||
int32_t x4, int32_t y4, int32_t z4)
|
||||
{
|
||||
GET_TLS();
|
||||
//x1 = (x1 << 16);
|
||||
//x2 = (x2 << 16);
|
||||
//y1 = (y1 << 16);
|
||||
//y2 = (y2 << 16);
|
||||
|
||||
//LOGE("Quad");
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x1, y1, z1);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x2, y2, z2);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x3, y3, z3);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x4, y4, z4);
|
||||
|
||||
int32_t vtx[] = {x1,y1,z1, x4,y4,z4, x3,y3,z3, x2,y2,z2};
|
||||
static const int32_t tex[] = {0,0, 0,0x10000, 0x10000,0, 0x10000,0x10000};
|
||||
|
||||
|
||||
rsc->setupCheck();
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
//glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glDisableClientState(GL_NORMAL_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
glVertexPointer(3, GL_FIXED, 0, vtx);
|
||||
glTexCoordPointer(2, GL_FIXED, 0, tex);
|
||||
//glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr);
|
||||
|
||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
}
|
||||
|
||||
extern "C" int32_t sinx(int32_t angle)
|
||||
{
|
||||
float a = ((float)angle) / 0x10000;
|
||||
a *= 3.14f / 180.f;
|
||||
float s = (float)sin(a);
|
||||
return int32_t(s * 0x10000);
|
||||
}
|
||||
|
||||
extern "C" int32_t cosx(int32_t angle)
|
||||
{
|
||||
float a = ((float)angle) / 0x10000;
|
||||
a *= 3.14f / 180.f;
|
||||
float s = (float)cos(a);
|
||||
return int32_t(s * 0x10000);
|
||||
}
|
||||
|
||||
extern "C" void pfBindTexture(RsProgramFragment vpf, uint32_t slot, RsAllocation va)
|
||||
{
|
||||
GET_TLS();
|
||||
|
||||
Reference in New Issue
Block a user