编译DirectX11着色器文件

弗朗西斯·库格勒

我目前正在第二系列教程中关注来自www.rastertek.com的DirectX 11教程。我目前在Windows7 x64上使用VS2015。遵循本教程,我将使用Windows 10套件。

我已经成功完成了前3个教程,并且能够使用DirectX 11渲染彩色窗口。我刚刚完成了教程4,使用带有顶点和像素着色器的HLSL渲染彩色三角形。我正在学习本教程,其中顶点着色器和像素着色器都位于单独的文件中,我代码中的唯一区别是我正在使用的文件扩展名。他的网站分别在我使用* .vsh和* .psh的地方使用* .vs和* .ps,因为这使我可以突出显示代码。我所有的类文件都可以正确编译,但是当我开始构建解决方案时,我得到了这个错误。

1>------ Build started: Project: DirectX 11 Engine, Configuration: Debug x64 ------
1>FXC : error X3501: 'main': entrypoint not found
1>
1>  compilation failed; no code produced
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

该网站的创建者没有任何联系信息或基于社区的论坛。我不知道这是否是网站教程中的错误。现在,我知道此代码在使用他的第一批DirectX 10和DirectX 11教程中的Windows 7和Windows 8套件同时在Windows Vista和Windows 7上使用VS的较早版本(例如2010、2012和2013)之前就已经起作用。我无法找到任何帮助www.msdn.com,因为他们的一些教程与Windows 8中的DirectX 11的使用VS2013的要求写的。他们的文档也很差。

我注意到,在编译Shader文件时DirectX 11中与Windows Kit相比与2010年6月不推荐使用的Direct X SDK版本有所不同的事情之一是:

2010年6月Direct X SDK-用途:

HRESULT result;

result = D3DX11CompileFromFile( "shaderFilename", NULL, NULL, "ShaderName", "*s_5_0" or "*s_5_1", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, &pShaderBuffer, &pErrorMessage, NULL );

相对...

本教程(来自VS2015的Windows 10工具包) -用法

HRESULT result;
result = D3DCompileFromFile( "shaderFilename", NULL, NULL, "ShaderName", "*s_5_0" or "*s_5_1", D3D10_SHADER_ENABLE_STRICTNESS, 0, &pShaderBuffer, &pErrorMessage );

着色器文件名,着色器名称,功能级别和着色器缓冲区为“顶点”或“像素着色器类型”。即使我指定了两个功能级别,在这两种情况下使用的功能级别都是“ 5_0”而不是“ 5_1”。

我不确定DirectX的HLSL的不同编译器之间发生了什么变化,并且我不知道从何处或为什么生成此错误。我不知道网站教程中的Shader源代码是否缺少某些内容,或者VS2015中是否存在我不知道的某些属性或设置不正确。我愿意提供任何建议来帮助解决此问题。

弗朗西斯·库格勒

我提出这个问题之后;我偶然发现了这个问题FXC:错误X3501:'main':找不到入口点,并且从那里有一些评论和答案。我只是结束了右键单击“ color.psh”和“ color.vsh”文件并在其属性下单击:

  • 配置属性->常规->从构建部分中排除我将标志设置为“是”
    • HLSL编译器->常规->着色器类型部分,我分别为每个文件的像素和顶点着色器设置了着色器类型。
    • HLSL编译器->常规->着色器模型部分我将两个文件的着色器模型设置为5.0(/ 5_0)。

现在,所有事物都可以成功构建,并且我正在按预期在黑色窗口背景上渲染绿色三角形。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的着色器和Directx11编译

来自分类Dev

编译着色器时出错 - DirectX11

来自分类Dev

DirectX11:从计算着色器读取模具位

来自分类Dev

DirectX11 HLSL着色器未运行

来自分类Dev

DirectX11 - 几何着色器流输出流未定义

来自分类Dev

DirectX 11:BOUND着色器资源视图的数量

来自分类Dev

使用DirectX11像素着色器将颜色从DXGI_FORMAT_B8G8R8A8_UNORM转换为GPU中的NV12

来自分类Dev

Metal编译的metallib着色器文件的格式?

来自分类Dev

iOS Metal Fragment着色器文件编译

来自分类Dev

Metal编译的metallib着色器文件的格式?

来自分类Dev

GLSL着色器-片段着色器无法编译

来自分类Dev

在DirectX 11中将纹理数组发送到着色器

来自分类Dev

在DirectX 11中将纹理数组发送到着色器

来自分类Dev

DirectX11如何加载Obj文件

来自分类Dev

OpenGL 3.2:缓存编译的着色器?

来自分类Dev

OpenGL编译的着色器损坏

来自分类Dev

Qt桌面着色器编译问题

来自分类Dev

无法快速编译着色器

来自分类Dev

Qt桌面着色器编译问题

来自分类Dev

LWJGL无法编译着色器

来自分类Dev

编译问题,简单的GLSL着色器

来自分类Dev

D3D11 着色器编译成功,但出现白屏

来自分类Dev

Directx:基于HLSL纹理的高度图。(着色器5.0)

来自分类Dev

如何在Visual Studio C#项目中编译hlsl着色器文件

来自分类Dev

如何在Visual Studio C#项目中编译hlsl着色器文件

来自分类Dev

OpenGL着色器的.HLSL文件

来自分类Dev

c ++ Directx11捕获屏幕并保存到文件

来自分类Dev

Android OpenGL ES着色器编译器支持

来自分类Dev

OpenGL不报告着色器编译器错误