我目前在第二系列教程中关注www.rastertek.com中的DirectX 11教程。我目前在Windows7 x64上使用VS2015。以下教程让我使用Windows 10套件。编译DirectX11着色器文件
我已经成功完成了前3个教程,并能够使用DirectX 11呈现彩色窗口。我刚完成了教程4,使用带顶点&像素着色器的HLSL呈现彩色三角形。我正在学习这个教程,其中顶点和像素着色器都在单独的文件中,我的代码中唯一的区别是我使用的文件扩展名。他的网站分别使用* .vs和* .ps,因为我使用* .vsh和* .psh,因为这会给我代码突出显示。我所有的类文件都能正确编译,但是当我开始构建我的解决方案时,我收到了这个错误。
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 ==========
本网站的创建者没有任何联系信息或基于社区的论坛。我不知道这是否是网站教程中的错误。现在我知道这个代码在Windows Vista和Windows 7上使用较旧版本的VS(例如2010,2012和2013)之前已经工作,使用Windows 7 &他的第一个系列的DirectX 10 & DirectX 11教程中的Windows 8套件。我无法从www.msdn.com找到任何帮助,因为他们的某些教程是使用VS2013针对DirectX 11的Windows 8要求编写的。他们的文档也很差。
其中之一,我已经注意到了,东西是从Windows工具包与不推荐使用的2010年6月的Direct X SDK版本中的DirectX 11不同的,当编译一个Shader文件如下:
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 Source代码是否缺少某些东西,或者如果VS2015中有某种属性或设置未正确设置,我不知道。我乐意提供任何和所有建议来帮助解决此问题。
不,野生甜菜只不过是代表“v”或“p”的问题中的占位符。我正在调用这个过程两次,每次着色器一次。 –