| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #include "Crown.h"
- #include "OS.h"
- #include <jni.h>
- #include <GLES/gl.h>
- #include "MovableCamera.h"
- namespace crown
- {
- MovableCamera* cam;
- extern "C"
- {
- JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj);
- };
- class MainScene : public AccelerometerListener, TouchListener
- {
-
- public:
- MainScene()
- {
- get_input_manager()->register_accelerometer_listener(this);
- get_input_manager()->register_touch_listener(this);
- cam = new MovableCamera(Vec3::ZERO, true, 90.0f, 1.6f, true, 0.1f, 2.5f);
- if (cam)
- {
- cam->SetActive(true);
- cam->SetSpeed(0.1);
- cam->SetFarClipDistance(1000.0f);
- }
- }
- void accelerometer_changed(const AccelerometerEvent& event)
- {
- cam->SetRotation(event.x, event.y);
- }
- void touch_down(const TouchEvent& event)
- {
- cam->MoveBackward();
- }
- void touch_move(const TouchEvent& event)
- {
- cam->MoveBackward();
- }
- void draw_triangle()
- {
- GetDevice()->GetRenderer()->set_clear_color(Color4::LIGHTBLUE);
- GetDevice()->GetRenderer()->set_matrix(MT_VIEW, Mat4::IDENTITY);
- GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY);
- cam->Render();
- static GLfloat vertices[] = { -1.0f, -1.0f, -2.0f,
- 1.0f, -1.0f, -2.0f,
- 0.0f, 1.0f, -2.0f};
- GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY);
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 0, vertices);
- glDrawArrays(GL_TRIANGLES, 0, 3);
- glDisableClientState(GL_VERTEX_ARRAY);
- }
- void frame()
- {
- Device* mDevice = GetDevice();
- os::event_loop();
- get_input_manager()->event_loop();
- GetDevice()->GetRenderer()->begin_frame();
- draw_triangle();
- GetDevice()->GetRenderer()->end_frame();
- os::swap_buffers();
- }
- };
- MainScene* scene = new MainScene();
- JNIEXPORT void JNICALL Java_crown_android_CrownLib_frame(JNIEnv* env, jobject obj)
- {
- scene->frame();
- }
- } // namespace crown
|