Aurora Engine 游戏引擎入门 02(编写程序入口)


简介

本序列由澳大利亚的一个游戏引擎爱好者整理制作,使用了前瞻的语言技术,
经常多次的修改制作,一个个小的知识点贯通,非常具有引导学习意义!

Bilibili站转载学习,非个人研究,鸣谢!

原作者Github
Bilibili直达链接
YouTube直达链接


#1、编写平台全局定义
#2、配置项目定义

// Core.h
#pragma once

#ifdef AO_PLATFORM_WINDOWS
	#ifdef AO_BUILD_DLL
		#define AURORA_API __declspec(dllexport)
	#else
		#define AURORA_API __declspec(dllimport)
	#endif
#else
	#error Aurora only supports Window!
#endif

#2 Aurora 配置AO_PLATFORM_WINDOWS和AO_BUILD_DLL两个全局预编译宏
Sandbox配置AO_PLATFORM_WINDOWS一个全局预编译宏
在这里插入图片描述


#1 编写根节点Runnable
#2 编写程序入口
#3 统一头文件include

#1

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

namespace Aurora {
	class AURORA_API Application
	{
	public:
		Application();
		virtual ~Application();
		void Run();
	};

	// 第一次定义全局函数,表示我有这个函数
	Application* CreateApplication();
}
// Application.cpp
#include "Application.h"

namespace Aurora
{
	Application::Application() 
	{

	}

	Application::~Application() 
	{

	}

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

#2

// EntryPoint.h
#pragma once

#ifdef AO_PLATFORM_WINDOWS

// 第二次定义重写全局函数,表示我这个函数在其他模块里面被实现
// extern 修饰变量或方法,其变量或方法在其他的地方实现
extern Aurora::Application* Aurora::CreateApplication();

int main(int argc, char** argv)
{
	// 执行步骤
	// #1 这个项目是dll,Aurora.h在最外层,最先进行编译
	// #1 按照Aurora.h的include顺序,依次初始化各个头文件
	// #1 到这里的时候已经include stdio.h了
	// #2 执行CreateApplication(),程序发现这是个extern,到处找实现,在SandboxApp里面找到了
	// #2 然后执行Run,发现Sandbox没有Run方法,去了父类里面找到了Application.cpp里面的实现
	printf("ENTRY POINT - MAIN\n");

	auto app = Aurora::CreateApplication();
	app->Run();
	// C++ 的内存管理 new - delete, new[] - delete[]
	// 因为上面的代码进入了死循环,所以可以把app给回收掉
	delete app;
	return 0;
}
#endif

#3

// Aurora.h
#pragma once

// #include "" 和 #include <>的区别
// ""一般包含用户自己写的一些头文件,而<>是包含STL或者第三方标准库的头文件

// .h 文件的位置要和代码执行流程一致
#include <stdio.h>

#include "Aurora/Application.h"

#include "Aurora/EntryPoint.h"

#1 配置额外包含头文件
#2 测试类修改

#1

在这里插入图片描述
#2

// SandboxApp.cpp
// 附加的包含目录只会对已经设置的目录当前支持
#include <Aurora.h>

using namespace Aurora;

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

	~Sandbox()
	{
	}
};

Application* Aurora::CreateApplication() 
{
	printf("CREATE\n");
	return new Sandbox();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值