【发布时间】:2014-03-19 05:17:55
【问题描述】:
我有一段相当复杂的 GLSL 代码(大约 5000 行),其中不同的部分用不同的宏标记。由于代码库很大,标志也很多,所以我理解代码流程并不难。想知道是否有工具可以向我显示预处理的 GLSL 输出。我尝试使用 gDebugger 查看源代码,但它也显示了未经预处理的代码。
【问题讨论】:
我有一段相当复杂的 GLSL 代码(大约 5000 行),其中不同的部分用不同的宏标记。由于代码库很大,标志也很多,所以我理解代码流程并不难。想知道是否有工具可以向我显示预处理的 GLSL 输出。我尝试使用 gDebugger 查看源代码,但它也显示了未经预处理的代码。
【问题讨论】:
cpp 是 Linux 和 MacOS 10 系统上安装了普通开发工具的独立命令行 C 预处理器。
它应该只用于 C 代码,但手册页说它可以在类似 C 的源代码上工作并且 GLSL 合格。 (不过,使用我的一个着色器进行的快速测试给出了#version 的警告消息。)您可以尝试在着色器上运行它。
希望这会有所帮助。
【讨论】:
如果您不想在计算机上安装任何 C/C++ 编译器只是为了查看预处理输出,或者如果您发现使用在线 IDE 更容易,您可以使用一些在线 C++ 编译器。我对Coliru 有很好的经验。
只需删除&& a.out 并添加-E -P,或将整个命令行替换为g++ main.cpp -E -P 或cpp main.cpp -P,然后按编译、链接并运行...。
如果您的源代码包含一些特定于 GLSL 的 # 命令(例如 #version),您将收到错误消息,但您仍会看到输出。
这个想法归功于Predelnik对Online Preprocessor for C++的评论
【讨论】:
您有不同的工具来调试 GLSL。以下是一些 - gDebugger - API跟踪 - GL拦截 - BuGLe 工具
How to debug a GLSL shader? 是与您的问题类似的链接
【讨论】: