fxc.exe生成的已编译像素和顶点着色器对象文件的格式是正式还是非正式记录的?
我希望能够读取常量名称以从着色器文件注册分配.我知道D3DX中的效果框架可以做到这一点,但我需要避免使用D3DX,因为它可能没有安装在用户的机器上,我不需要它用于其他任何东西所以我想避免它们必须运行directx更新.
如果效果框架可以做到这一点,那么如果我能找到文件格式,我也可以'似乎在任何地方都能找到它.
(这是用于directx9)
这是开发人员PC安装了D3DX redists和VC++ redists的常见问题,最终用户PC可能没有.如果您有一台"干净的PC"进行安装测试,那么在您安装的那一刻它就不再干净了.
特别是对于D3DX redists,有没有办法删除redists,所以我的应用程序将无法工作,除非它的安装程序正确安装所需的redist版本?
我正在尝试学习DirectX 11,并且正在使用Visual Studio 2013 for Windows 7编写一个小应用程序.我正在阅读"使用DirectX 11进行3D游戏编程简介"一书,到目前为止,一切都很顺利.我刚刚介绍了本书的部分内容,其中显示了BoxApp示例,我正在尝试在我的应用程序中实现类似的代码,以便更好地了解最新情况.
我遇到了示例代码中使用的以下不推荐使用的库函数的问题:
D3DX11CompileFromFile(....);
D3DX11CreateEffectFromMemory(...);
Run Code Online (Sandbox Code Playgroud)
首先,只是为了看看我是否理解为什么这些不再可用,我对这些函数不再存在的理解是,对于Windows 8,不推荐使用D3DX头文件和库.最初它们是DirectX SDK中提供的辅助库. Dx9,然后由Os提供Dx10,然后弃用Dx11.1(2)?
现在我的主要问题是如何在没有弃用的D3DX标题的情况下编译着色器和效果?我对这个问题的正确方法感到有些困惑.
对我来说似乎有两种选择:
就像我说的那样,我不太确定哪种选择最好(或者即使有更好的替代选择).我的理解是Effects11更多地用于支持需要移植到Dx11的旧版Dx10.由于我没有任何Dx10代码移植,我对这种支持并不太感兴趣,我对Windows 8中的Metro应用程序支持并不太感兴趣(我认为这对他们来说是正确的术语?)或者如果D3DCompiler路径将意味着支持地铁应用程序,然后我想这是可取的.
无论如何,任何建议或见解将不胜感激.提前致谢.
我一直在按照一些教程学习 DirectX,但是每次我自己输入一些东西时,DirectX 就无法工作。这是我经过数小时研究后无法修复的最新错误示例:
//Header.h
static HWND hWnd;
static IDXGISwapChain* swapChain;
static ID3D11Device* dev;
static ID3D11DeviceContext* devCon;
static ID3D11RenderTargetView* renderTarget;
//DirectX.cpp
bool InitD3D11(HINSTANCE hInst)
{
HRESULT hr;
DXGI_MODE_DESC bufferDesc;
ZeroMemory(&bufferDesc, sizeof(DXGI_MODE_DESC));
bufferDesc.Width = 800;
bufferDesc.Height = 600;
bufferDesc.RefreshRate.Numerator = 60;
bufferDesc.RefreshRate.Denominator = 1;
bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
bufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
bufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
DXGI_SWAP_CHAIN_DESC swapChainDesc;
ZeroMemory(&swapChainDesc, sizeof(DXGI_SWAP_CHAIN_DESC));
swapChainDesc.BufferDesc = bufferDesc;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.BufferCount = 1;
swapChainDesc.OutputWindow = hWnd;
swapChainDesc.Windowed = true;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
hr …
Run Code Online (Sandbox Code Playgroud) 在我开始之前,我知道这是一个很常见的问题,我确实在这里发布之前搜索了答案。不幸的是,我没有运气。
在我的代码中,我包含如下文件:
#include <d3dx9.h>
Run Code Online (Sandbox Code Playgroud)
现在出现错误:无法打开源文件d3dx9.h
在我的包含目录中,我确实输入了它所在的路径(如果我通过文件手动查找它,则可以在其中看到它)。
路径是: C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
我还设置了库目录: C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64
x64,因为我正在运行64位系统。
如果有人能抽出宝贵时间提出建议,我将不胜感激。
问候。
d3dx ×5
c++ ×3
directx ×2
debugging ×1
direct3d ×1
direct3d11 ×1
directx-11 ×1
file-format ×1
hlsl ×1
inno-setup ×1
installer ×1
sdk ×1