FCT
载入中...
搜索中...
未找到
Android_Window.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/2/20.
3//
4#include "../ThirdParty.h"
5#include "Window.h"
7#ifdef FCT_USE_VULKAN
8#include "../Context/VK_Swapchain.h"
9#endif
10
11#ifndef ANDROID_WINDOW_H
12#define ANDROID_WINDOW_H
13namespace FCT {
14 class Android_Window : public Window {
15 public:
17 Android_Window(JavaVM* vm);
18
19 void bind(FCT::Context *ctx) override;
20
21 bool isRunning() const override;
22
23 void swapBuffers() override;
24
25 int getWidth() override;
26
27 int getHeight() override;
28 uint32_t getDeviceWidth();
29 uint32_t getDeviceHeight();
30 void onDestory();
31
32 void setCursorPos(int x, int y) override;
33
34 void invokeResizeCallbacks(int width, int height);
35
36 void invokeMouseMoveCallbacks(int xpos, int ypos);
37
38 void invokeMouseCallbacks(int button, int action, int mods);
39
40 void invokeKeyCallbacks(int key, int scancode, int action, int mods);
41
42 void invokeScrollCallbacks(int xoffset, int yoffset);
43
44 void create();
45
46 void destroy();
47
48 bool isCreated() const;
49
50 bool hasSurface() const;
51
52 //void createSurface(jobject surface);
53
54 void destroySurface();
55 void create(float w,float h,const char* title);
56
57 void viewport(Vec2 lt, Vec2 rb);
58 void sizeParam(int w,int h);
59 void resize(int w,int h);
60 void onSurfaceCreate(jobject surface);
61 void onSurfaceChanged(int width, int height);
62 void onSurfaceDestroy();
63 private:
64 jni::GlobalObject<FCTWindowJavaClass>* m_windowObject;
66 JNIEnv* getEnv(){
67 JNIEnv* env = nullptr;
68 m_vm->GetEnv((void **)&env, JNI_VERSION_1_6);
69 return env;
70 }
71 JavaVM* m_vm;
75 const char *m_title;
79 ANativeWindow* m_nativeWindow;
81#ifdef FCT_USE_VULKAN
82 VK_Swapchain* m_vkSwapchain;
83
87 void presentVulkan();
88 vk::SurfaceKHR m_vulkanSurface;
89 //vk::SwapchainKHR m_vulkanSwapchain;
90
91#endif
92 //Image* m_buffer;
94 std::function<void()> destorySurface;
95 std::function<void()> createSurface;
96 std::function<void()> recreateSwapChain;
97 std::function<void()> present;
98 };
99}
100
101#endif //ANDROID_WINDOW_H
void invokeMouseMoveCallbacks(int xpos, int ypos)
std::function< void()> createSurface
std::function< void()> present
std::function< void()> destorySurface
void viewport(Vec2 lt, Vec2 rb)
void invokeKeyCallbacks(int key, int scancode, int action, int mods)
vk::SurfaceKHR m_vulkanSurface
void bind(FCT::Context *ctx) override
jni::GlobalObject< FCTWindowJavaClass > * m_windowObject
void invokeScrollCallbacks(int xoffset, int yoffset)
void onSurfaceCreate(jobject surface)
void setCursorPos(int x, int y) override
void invokeMouseCallbacks(int button, int action, int mods)
void invokeResizeCallbacks(int width, int height)
std::function< void()> recreateSwapChain
void sizeParam(int w, int h)
void onSurfaceChanged(int width, int height)
ANativeWindow * m_nativeWindow
bool isRunning() const override
void title(const std::string &title)