gpt4 book ai didi

c++ - 尝试在 C++ 中编译基本 HLSL 着色器时出现错误 C2146

转载 作者:行者123 更新时间:2023-11-28 00:49:59 25 4
gpt4 key购买 nike

我刚刚开始使用 C++ 学习 HLSL 的基础知识,我正在按照一本书上的教程进行操作,第一个基本着色器是:

float4 VS_Main( float4 pos:POSITION):SV_POSITION
{

return pos;
}

但是我在编译时遇到了很多错误:

error C2146: 语法错误: ';'在标识符“VS_Main”之前丢失

错误 C4430:缺少类型说明符,假定为 int。注意:不再支持 default-int

错误 C2146:语法错误:标识符“pos”前缺少“)”

error C2059: syntax error looks looks like a function definition, but there is no formal parameter list.

error C2059: 语法错误: '{'

看起来编译器根本无法处理 HLSL...也许 VS2012 express 不支持 HLSL?

提前致谢

最佳答案

HLSL 不是 C++。你应该用着色器编译器编译着色器,用 C++ 编译器编译 C++——不要混用。编译 HLSL 有两种选择。

  1. 使用 DirectX SDK 中包含的命令行实用程序 fxc.exe(文档和用法 here at MSDN)。它会生成一个文件,您应该通过描述的某些方式在运行时加载该文件 here .
  2. 使用 D3DCompileFromFile 在运行时编译着色器功能。

每种变体都各有利弊。简而言之,在构建时预编译可以让你在运行时获得一些时间,而在运行时编译在开发阶段更加灵活和舒适(无需记住重新编译它或使用构建后脚本)但更多错误 -易于。自己选择。

关于c++ - 尝试在 C++ 中编译基本 HLSL 着色器时出现错误 C2146,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com