public void OnDrawFrame(IGL10 gl) { long currentTime = (SystemClock.UptimeMillis() - time); time = SystemClock.UptimeMillis(); if (currentTime == 0) { currentTime = 1; } float fps = (float)(1000 / currentTime); FPSSum += fps; FPSCount++; if (FPSCount > 100) { maxFPS = (int)((FPSSum / FPSCount) / 5.0f * 4.0f); maxFPSSec = (int)(1000 / maxFPS); } FrameCount++; if (FrameCount > 200) { FrameCount = 0; } if (RenderManager.canvasView != null) { RenderManager.canvasView.dataText = "FPS: " + ((int)FPSSum / FPSCount).ToString() + "mFPS " + ((int)maxFPS).ToString() + ":" + ((int)fps).ToString(); } if (GlobalVar.greenMode != 0) { if (currentTime < maxFPSSec) { Thread.Sleep((int)(maxFPSSec - currentTime)); fps = 0.0f; } } RenderManager.Render(gl); }
public void OnSurfaceChanged(IGL10 gl, int width, int height) { RenderManager.width = width; RenderManager.height = height; RenderManager.gl = gl; RenderManager.GetCurrent().width = width; RenderManager.GetCurrent().height = height; GLES20.GlViewport(0, 0, width, height); float ratio = (float)width / height; float left = -ratio; float right = ratio; float top = 1.0f; float bottom = -1.0f; float near = 5.4f; float far = 200.0f; Matrix.FrustumM(RenderManager.GetCurrent().mProjectionMatrix, 0, left, right, bottom, top, near, far); //ORTHO! //Matrix.OrthoM(RenderManager.GetCurrent().mProjectionMatrix, 0, 0f, width, 0.0f, height, 0, 50); }
public static float GetScrY(float x, float y, float z) { if (RenderManager.GetCurrent() == null) { return(-1); } float[] vector = new float[4]; int[] viewport = new int[] { 0, 0, RenderManager.width, RenderManager.height }; GLU.GluProject(x, y, z, RenderManager.GetCurrent()._mViewMatrix, 0, RenderManager.GetCurrent().mProjectionMatrix, 0, viewport, 0, vector, 0); if (vector[2] > 1.0f) { return(-1.0f); } else { return(viewport[3] - vector[1]); } }
protected override void OnPause() { wakeLock.Release(); base.OnPause(); RenderManager.Pause(); }
protected override void OnResume() { wakeLock.Acquire(100); base.OnResume(); RenderManager.Resume(); }
public bool OnTouch(View v, MotionEvent e) { if (touchLock) { return(false); } touchLock = true; switch (e.Action) { case MotionEventActions.Down: touchX = -1; if ((e.GetX() > 0) && (e.GetX() < 100) && (e.GetY() > 0) && (e.GetY() < 100)) { if (RenderManager.edgeCount > 39) { break; } ObjectManager.del(0); if (ObjectManager.getCount() != 0) { ObjectManager.del(0); } RenderManager.edgeCount++; RenderManager.Resume(); } else if ((e.GetX() > RenderManager.metrics.WidthPixels - 100) && (e.GetX() < RenderManager.metrics.WidthPixels) && (e.GetY() > 0) && (e.GetY() < 100)) { if (RenderManager.edgeCount < 3) { break; } ObjectManager.del(0); if (ObjectManager.getCount() != 0) { ObjectManager.del(0); } RenderManager.edgeCount--; RenderManager.Resume(); } else { touchX = e.GetX(); touchY = e.GetY(); touchTime = SystemClock.UptimeMillis(); } break; case MotionEventActions.Up: if (touchX != -1) { Move(e); } break; case MotionEventActions.Move: if (touchX != -1) { Move(e); } break; } touchLock = false; return(true); }