游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2878|回复: 1

装入系统 LoadAppSystems()

[复制链接]

12

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2003-10-14 18:51:00 | 显示全部楼层 |阅读模式
LoadAppSystems()
UnloadAppSystems()
两个函数是系统真正入口LauncherMain()进入与退出时分别调用的。
(参见http://www.kanepeng.com/hl2.htm)

实现于 src_main\launcher\launcher.cpp。

LoadAppSystems()依次装入
1 file system -> FileSystem_LoadFileSystemModule()
2 material system "materialsystem.dll"
3 engine "engine.dll"
4 vgui2 "vgui2.dll"
5 mat system surface "vguimatsurface.dll"

装入函数为:
FileSystem_LoadModule("xxx.dll")与
Sys_GetFactory()

UnloadAppSystems()卸装各模块,
使用函数FileSystem_UnloadModule()。

问题:
file system 是干什么用的?
FileSystem_XXX() 函数为什么不用一个类包装一下?(这几个函数就象是类函数调用)
FileSyetem_XXX() 函数与class IFileSystem 是什么关系?

18

主题

92

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2003-10-15 11:50:00 | 显示全部楼层

Re:装入系统 LoadAppSystems()

filesystem 就是virtual file system

FileSystem_XXX() 函数为什么不用一个类包装一下?

为什么要用类包装一下??
//-----------------------------------------------------------------------------
// Loads, unloads a DLL ... wrapper around Sys_LoadModule() to ensure a local
//                        copy of the DLL is present incase using the Steam FS
//-----------------------------------------------------------------------------
CSysModule *FileSystem_LoadModule(const char *path)
{
        if ( g_pFileSystem )
                return g_pFileSystem->LoadModule( path );
        else
                return Sys_LoadModule(path);
}

如果filesysem装载了,就用filesystem来load,不然用Sys_LoadModule

g_pFileSystem->LoadModule( path )最后还是调Sys_LoadModule来装

Sys_LoadModule对跨平台的模块装入进行了封装,
windows就是装dll, linux就是装so
...


FileSyetem_XXX() 函数调用了与class IFileSystem 是什么关系?

g_pFileSystem就是class IFileSystem指针,在FileSystem_LoadModule中调用了IFileSystem指针,也就是所谓的接口指针了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-11 06:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表