c++ Half-Life SDK dll

f0brbegy  于 2023-07-01  发布在  其他
关注(0)|答案(2)|浏览(174)

因此,当修改半条命(或任何源游戏实际上),该项目建立到一个.dll而不是一个.exe,这些.dll的是由游戏.exe文件使用。在.exe中使用了. dll文件,它是如何知道如何加载模型的,或者如何知道要渲染哪些内容的?

zi8p0yeb

zi8p0yeb1#

从预定文件夹加载模型、材料和其他内容。对于源引擎,这些在https://developer.valvesoftware.com/wiki/Source_SDK_Files_and_Directory_Structure中进行了说明
要实际加载DLL并从其中运行代码,该方法是特定于操作系统的。在Win32上,C/C++程序通常使用LoadLibrary函数打开DLL文件并将其复制到自己的内存空间中,然后使用GetProcAddress函数查找指向DLL中给定代码段的函数指针。

iaqfqrcu

iaqfqrcu2#

.exe文件是游戏的启动器,引擎通常在dll文件中(hw.dll用于Half Life,engine.dll和其他用于Source)。游戏服务器DLL实现实体行为(spawn,think,touch,use)并将实体导出到引擎,这主要源于原始的雷神之锤,它使用几乎相同的系统,除了在雷神之锤1中游戏代码包含在编译的脚本中。
游戏客户端DLL实现鼠标/键盘输入,绘制GUI,实现临时客户端实体。引擎和游戏DLL在需要时相互通信:当加载Map时,引擎为Map中的所有实体调用生成方法,当运行帧时,引擎为服务器中的所有实体调用思考方法,游戏DLL调用引擎函数以实现大多数任务(访问文件系统、修改渲染器行为、创建实体等)。
引擎知道如何加载模型,因为有一个已建立的模型格式,引擎知道如何加载,如果你提供了一个正确的模型,它应该得到加载。引擎可以查询BSP数据以找出Map包含什么模型,或者它可以依赖于游戏DLL实体生成函数,实体可以预缓存它们的模型(加载它们以便稍后使用)。
游戏通过知道玩家的位置、服务器实体信息和Map模型来知道要渲染什么。Half-Life/Source遵循行业标准的计算机图形编程程序(通过使用透视投影),它们要么依赖于OpenGL/DirectX功能,要么部分自己完成。玩家的位置和观看方向用于从3D世界模型和3D实体模型生成2D图像。

相关问题