【问题标题】:While compiling on VS2012 using HLSL: float4 is undefined使用 HLSL 在 VS2012 上编译时:float4 未定义
【发布时间】:2013-02-02 14:17:28
【问题描述】:

我刚刚开始学习 DirectX 和 hlsl 的一些基础知识。我正在按照书中的示例进行操作。我对以下基本着色器有疑问:

float4 VS_Main( float4 pos:POSITION):SV_POSITION
{
return pos;
}

Intelligence 说 float4 是一个未定义的标识符。据我所知,这应该是 HLSL 中用于定义 4 维向量的标准类型,但我无法获得足够的信息,这本书也无济于事。我在这里错过了什么?

【问题讨论】:

    标签: c++ directx hlsl


    【解决方案1】:

    我认为 VS2012 上的 Intellisense 不支持 HLSL 关键字;你可以忽略它无法解决float4的事实。另请参阅:VS2010 - HLSL Intellisense?(有些答案确实提到了 VS2012)。

    【讨论】:

    • 感谢您的快速回答,我不知道它是否相关,但是当我编译代码时出现很多错误,例如 C2146: sintax error: ';'在标识符“VS_Main”之前丢失,以及其他此类错误。看起来它根本不识别sintax。可能是因为我使用的是 VS2012 Express?
    • 我发现了一些东西stackoverflow.com/questions/12408610/…,它说 Express 不支持 HLSL 编辑和调试..
    • @SimonePreviti:关于编译错误——听起来 Visual Studio 正在尝试将着色器编译为 C 或 C++ 源文件,而它应该使用着色器编译器。见:msdn.microsoft.com/en-US/library/windows/desktop/bb509633
    【解决方案2】:

    C++ 编译器不编译 HLSL。 HLSL应该以资源的形式使用,然后应该在运行时加载。不能简单地创建一个.cpp 文件并期望 HLSL 代码编译为 C++。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2015-06-02
      • 2012-08-30
      • 2014-01-10
      • 1970-01-01
      相关资源
      最近更新 更多