triangle.cpp 1.4 KB

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