OpenGL着色器的.HLSL文件

时间:2016-03-02 11:11:39

标签: c++ opengl shader

我正在尝试使用this教程制作一个简单的OpenGL应用程序。它说我可以为着色器提供我想要的任何文件扩展名。但是,在VS2013中,当我单击“添加新项目”时,转到Visual C ++选项卡并添加像素着色器或顶点着色器,它不能正确编译,我会收到错误。为什么会这样?为什么我不能将.hlsl文件用于我的着色器,而普通的.txt只是编译?

我得到的错误:

  • 错误x3000
  • 错误x1504

2 个答案:

答案 0 :(得分:3)

问题不是文件扩展名,而是与文件关联的编译器选项。在visual studio中创建其中一个Dr = cmd.ExecuteReader(); if (Dr.Read()) { txtReguID.Text = Dr["Registration_ID"].ToString(); string addmissiondate = Dr["AdmissionDate"].ToString(); txtAdmissionDate.Text = Convert.ToDateTime(addmissiondate).ToString("MM/dd/yyyy"); } 文件时,其默认hlsl(可在属性面板中看到)为Item Type。这意味着编译器链尝试使用hlsl编译器编译此文件,当文件包含HLSL Compiler代码时,该文件无法解决。

您可以手动将项目类型切换为glsl(或其他没有编译关联的内容),也可以使用其他扩展名。我个人绝对不会命名一个glsl着色器文件* .hlsl,因为项目中的每个人都会认为它包含hlsl代码。

答案 1 :(得分:0)

Hlsl是DirectX着色器的扩展。当您在Visual中添加hlsl文件时,它会识别它并尝试将其编译为DirectX着色器,这当然与OpenGL着色器不同。我建议使用glsl文件。