从零开发游戏引擎系列(二)引擎入口

2021-02-14  本文已影响0人  zaintan

该系列教程源自youtube的cherno的视频-GAME ENGINE series!

视频地址: https://www.youtube.com/watch?v=vtWdgtMo1T4

引擎源代码地址: https://github.com/TheCherno/Hazel

主要内容简介:
将第一节的测试代码移除,添加引擎的入口

代码目录结构如下

image.png

Hazel.h

#pragma once
#include "Hazel/Application.h"

Hazel/Core.h

#pragma once
#ifdef HZ_PLATFORM_WINDOWS
    #ifdef HZ_BUILD_DLL
        #define HAZEL_API __declspec(dllexport)
    #else
        #define HAZEL_API __declspec(dllimport)
    #endif // HZ_BUILD_DLL
#else
#error Hazel only support Windows!
#endif // !HZ_PLATFORM_WINDOWS

Hazel/Application.h

#pragma once

#include "Core.h"

namespace Hazel {
    class HAZEL_API Application {
    public:
        Application();
        virtual ~Application();
        void Run();
    };

    //To be defined in CLIENT
    Application* CreateApplication();
}

Hazel/Application.cpp

#include "Application.h"
#include <cstdio>

namespace Hazel {
    Application::Application() {

    }

    Application::~Application() {

    }

    void Application::Run() {
        while (true);
    }
}

Hazel/EntryPoint.h

#pragma once

#ifdef HZ_PLATFORM_WINDOWS

extern Hazel::Application* Hazel::CreateApplication();

int main(int argc, char** argv) {

    auto app = Hazel::CreateApplication();
    app->Run();
    delete app;
    return 0;
}

#endif

SandboxApp.cpp

#include <Hazel.h>
#include <Hazel/EntryPoint.h>

class Sandbox : public Hazel::Application {
public:
    Sandbox() {

    }

    ~Sandbox() {

    }
};

Hazel::Application* Hazel::CreateApplication()
{
    return new Sandbox;
}

给项目 Hazel 添加宏 :(注意每个平台(Debug/Release)都要设置)

HZ_PLATFORM_WINDOWS

HZ_BUILD_DLL

配置属性 -> c/c++ -> 预处理器 -> 预处理器定义

image.png

同样的方式给项目 Sandbox 添加宏 :(注意每个平台(Debug/Release)都要设置)

HZ_PLATFORM_WINDOWS

添加头文件目录 $(SolutionDir)Hazel\src

配置属性 -> c/c++ -> 常规 -> 附加包含目录

image.png
上一篇 下一篇

猜你喜欢

热点阅读