简介
本序列由澳大利亚的一个游戏引擎爱好者整理制作,使用了前瞻的语言技术,
经常多次的修改制作,一个个小的知识点贯通,非常具有引导学习意义!
Bilibili站转载学习,非个人研究,鸣谢!
原作者Github
Bilibili直达链接
YouTube直达链接
#1 添加OpenGL输入监听
#2 为ImGui添加事件
#1
glfwSetCharCallback(m_Window, [](GLFWwindow* window, unsigned int keycode)
{
WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window);
KeyTypedEvent event(keycode);
data.EventCallback(event);
});
#2
// ImGuiLayer.h
#pragma once
#include "Aurora/Layer.h"
#include "Aurora/Events/ApplicationEvent.h"
#include "Aurora/Events/KeyEvent.h"
#include "Aurora/Events/MouseEvent.h"
namespace Aurora {
// ImGui层 处理渲染和事件
class AURORA_API ImGuiLayer : public Layer
{
public:
ImGuiLayer();
~ImGuiLayer();
// 当层被创建的时候
void OnAttach();
// 当层被销毁的时候
void OnDetach();
void OnUpdate();
void OnEvent(Event& event);
private:
// 定义UI需要的事件,这里的事件只会作用到UI
// 游戏的事件流程 硬件->系统->OpenGL->Game Engine->ImGui->User
bool OnMouseButtonPressedEvent(MouseButtonPressedEvent& e);
bool OnMouseButtonReleasedEvent(MouseButtonReleasedEvent& e);
bool OnMouseMovedEvent(MouseMovedEvent& e);
bool OnMouseScrolledEvent(MouseScrolledEvent& e);
bool OnKeyPressedEvent(KeyPressedEvent& e);
bool OnKeyReleasedEvent(KeyReleasedEvent& e);
bool OnKeyTypedEvent(KeyTypedEvent& e);
bool OnWindowResizeEvent(WindowResizeEvent& e);
private:
float m_Time = 0.0f;
};
}
// ImGuiLayer.cpp
#include "aopch.h"
#include "ImGuiLayer.h"