【问题标题】:Getting the project directory in Win32 for shader loading在 Win32 中获取项目目录以进行着色器加载
【发布时间】:2012-07-31 04:01:50
【问题描述】:

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

由于我正在使用 D3D,我只想在我的项目根目录中创建一个着色器目录,将着色器存储在那里,然后快速访问它们。

显然有多种方法可以做到这一点,但我对获取项目的根目录并没有很清楚的想法。是否有为此预定义的宏 - 或某种用于访问项目根文件夹的函数?

【问题讨论】:

标签: winapi directory shader direct3d resource-files


【解决方案1】:

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

请参阅this question 了解详细的方法列表。

【讨论】:

    【解决方案2】:
    DWORD WINAPI [GetCurrentDirectory][1](
      __in   DWORD nBufferLength,
      __out  LPTSTR lpBuffer
    );
    

    检索当前进程的当前目录。

    我相信这是您正在寻找的功能。然后,将着色器所在的子目录路径附加到返回的完整路径,即执行程序的位置。

    【讨论】:

    • 我查找了那个函​​数,但它不会加载到程序的实际二进制目录 - 而不是源目录?
    • 在大多数项目环境中,二进制目录是相对于源目录的,因此您可以使用 ".." 退回到公共根目录,然后前进到您要查找的位置,例如 "c:\projects\myproj\x64\bin\" + "..\..\source\shaders"
    • 抱歉,“当前目录”可以是任何东西,并且可能与应用程序目录无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多