我现在已经准备好深入研究着色器,尽管我一直在使用基于模块的系统作为学习如何进行图形编程的方法(我已经写过)。
由于我正在使用 D3D,我只想在我的项目根目录中创建一个着色器目录,将着色器存储在那里,然后快速访问它们。
显然有多种方法可以做到这一点,但我对获取项目的根目录并没有很清楚的想法。是否有为此预定义的宏 - 或某种用于访问项目根文件夹的功能?
我现在已经准备好深入研究着色器,尽管我一直在使用基于模块的系统作为学习如何进行图形编程的方法(我已经写过)。
由于我正在使用 D3D,我只想在我的项目根目录中创建一个着色器目录,将着色器存储在那里,然后快速访问它们。
显然有多种方法可以做到这一点,但我对获取项目的根目录并没有很清楚的想法。是否有为此预定义的宏 - 或某种用于访问项目根文件夹的功能?
大多数语言都有获取应用程序路径的方法,但大多数会包装GetModuleFileName()
函数,传递一个空模块句柄。然后,您可以从生成的路径中删除可执行文件名称以获取基本文件夹。
有关方法的广泛列表,请参阅此问题。
DWORD WINAPI [GetCurrentDirectory][1](
__in DWORD nBufferLength,
__out LPTSTR lpBuffer
);
检索当前进程的当前目录。
我相信这是您正在寻找的功能。然后,将着色器所在的子目录路径附加到返回的完整路径,即执行程序的位置。