Winapi 在Win32中获取项目目录以加载着色器

Winapi 在Win32中获取项目目录以加载着色器,winapi,directory,shader,direct3d,resource-files,Winapi,Directory,Shader,Direct3d,Resource Files,我现在已经准备好深入研究着色器了,尽管我一直在使用基于模块的系统作为学习如何进行图形编程的手段(我已经编写了) 因为我使用的是D3D,所以我只想在我的项目根目录中创建一个着色器目录,将着色器存储在那里,并快速访问它们 显然有多种方法可以做到这一点,但我不太清楚如何获取项目的根目录。是否有用于此的预定义宏,或用于访问项目根文件夹的某种函数 DWORD WINAPI [GetCurrentDirectory][1]( __in DWORD nBufferLength, __out LP

我现在已经准备好深入研究着色器了,尽管我一直在使用基于模块的系统作为学习如何进行图形编程的手段(我已经编写了)

因为我使用的是D3D,所以我只想在我的项目根目录中创建一个着色器目录,将着色器存储在那里,并快速访问它们

显然有多种方法可以做到这一点,但我不太清楚如何获取项目的根目录。是否有用于此的预定义宏,或用于访问项目根文件夹的某种函数

DWORD WINAPI [GetCurrentDirectory][1](
  __in   DWORD nBufferLength,
  __out  LPTSTR lpBuffer
);
检索当前进程的当前目录


我相信这就是你要寻找的功能。然后将着色器所在的子目录路径附加到返回的完整路径上,该路径是执行程序的起点。

大多数语言都有获取应用程序路径的方法,但大多数语言都会包装函数,传递空模块句柄。 然后,您可以从结果路径中删除可执行文件名,以获取基本文件夹


有关方法的详细列表,请参阅。

我查找了该函数,但它不会加载到程序的实际二进制目录,而不是源目录吗?在大多数项目环境中,二进制目录是相对于源目录的,因此可以使用“.”返回到一个公共根目录,然后前进到您要查找的位置,例如“c:\projects\myproj\x64\bin\“+”。\..\source\shaders”很抱歉,“当前目录”可以是任何内容,并且可能与应用程序目录无关。可能重复