我目前正在第二系列教程中关注来自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”文件并在其属性下单击:
现在,所有事物都可以成功构建,并且我正在按预期在黑色窗口背景上渲染绿色三角形。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句