triangle.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "Crown.h"
  2. #include "OS.h"
  3. #include <jni.h>
  4. #include <GLES/gl.h>
  5. #include "MovableCamera.h"
  6. namespace crown
  7. {
  8. MovableCamera* cam;
  9. extern "C"
  10. {
  11. JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj);
  12. };
  13. class MainScene : public AccelerometerListener
  14. {
  15. public:
  16. MainScene()
  17. {
  18. get_input_manager()->register_accelerometer_listener(this);
  19. cam = new MovableCamera(Vec3::ZERO, true, 90.0f, 1.6f, true, 0.1, 2.5);
  20. if (cam)
  21. {
  22. cam->SetActive(true);
  23. cam->SetSpeed(0.1);
  24. cam->SetFarClipDistance(1000.0f);
  25. }
  26. }
  27. void accelerometer_changed(const AccelerometerEvent& event)
  28. {
  29. Log::I("Accelerometer changed");
  30. cam->SetRotation(event.x, event.y);
  31. }
  32. void draw_triangle()
  33. {
  34. cam->Render();
  35. static GLfloat vertices[] = { -1.0f, -1.0f, -2.0f,
  36. 1.0f, -1.0f, -2.0f,
  37. 0.0f, 1.0f, -2.0f};
  38. GetDevice()->GetRenderer()->SetMatrix(MT_MODEL, Mat4::IDENTITY);
  39. Mat4 projection;
  40. projection.build_projection_perspective_rh(90.0f, 800.0f/480.0f, 0.1f, 100.0f);
  41. GetDevice()->GetRenderer()->SetMatrix(MT_PROJECTION, projection);
  42. GetDevice()->GetRenderer()->SetClearColor(Color4::LIGHTBLUE);
  43. glEnableClientState(GL_VERTEX_ARRAY);
  44. glVertexPointer(3, GL_FLOAT, 0, vertices);
  45. glDrawArrays(GL_TRIANGLES, 0, 9);
  46. glDisableClientState(GL_VERTEX_ARRAY);
  47. }
  48. void frame()
  49. {
  50. Device* mDevice = GetDevice();
  51. os::event_loop();
  52. get_input_manager()->event_loop();
  53. GetDevice()->GetRenderer()->_BeginFrame();
  54. draw_triangle();
  55. GetDevice()->GetRenderer()->_EndFrame();
  56. os::swap_buffers();
  57. }
  58. };
  59. MainScene* scene = new MainScene();
  60. JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj)
  61. {
  62. scene->frame();
  63. }
  64. } // namespace crown