问题标签 [directx-11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 SlimDX 的奇怪渲染(脸上的洞)
我在使用 SlimDX (DirectX 11) 渲染一个简单的旋转立方体时遇到了问题。立方体正在旋转,这些是我得到的图像:
我使用这个顶点着色器:
这就是我准备 WorldViewProj 的方式:
首先我看到了这个问题:Incorrect Clipping and 3D Projection when using SlimDX
而且,矩阵可能有问题(因为我既不转置视图也不转置投影,而是转置世界——在相反的情况下,没有渲染任何东西)。但即使我将视图矩阵和投影矩阵都设置为单位矩阵,“洞”仍然存在。
请提前帮助和感谢!
directx - 在 directx 地形上移动凹面
我需要 Directx 的一些帮助。
我正在 Nvidia Directx SDK 的 TerraTessellation 示例之上构建我的项目。
基本上我所做的是更改我感兴趣的地形文件的 .dds 文件。
问题是:
当我在 X、Y 和 Z 位置上移动相机时,地图的凹面也会移动,因此关于纹理,它不在应有的正确位置。怎么了?什么可以帮助解决问题?谢谢!检查下面的图片。
directx - 我可以使用 DirectX 11 开发应用程序吗
我想知道我们是否可以使用 DirectX 11 开发 C#、WPF 应用程序。我有一个使用 DirectX 编写的应用程序(中等大小)。我们需要使用 Directx 11 中的功能,例如并行渲染。是否可以使用 DirectX 11 开发应用程序?如果是的话,任何人都可以为此提供一些示例应用程序吗?我们不能选择像 SlimDX 这样的其他选项,因为我们负担不起重写整个代码的费用。
请建议对我来说最好的选择是什么?
c++ - 什么会导致 D3D11CreateDevice() 因 E_FAIL 而失败?
我正在使用以下代码调用 D3D11CreateDevice():
但是,存储在中的结果HRESTUL hr
是E_FAIL
. 控制台有以下输出:
Init Direct3D.exe 中 0x7590b9bc 处的第一次机会异常:Microsoft
C++ 异常:内存位置 0x0049ec64 处的 _com_error ..
c:\users\andrew\desktop\code\common\d3dapp.cpp(389):
D3D11CreateDevice(0, md3dDriverType, 0 , createDeviceFlags, 0, 0, D3D11_SDK_VERSION, &md3dDevice, &featureLevel, &md3dImmediateContext)
hr=E_FAIL (0x80004005) 初始化 Direct3D.exe 已触发断点
我不认为这是代码构建时的链接问题,但定义了以下附加依赖项:
d3d11lib
d3dx11d.lib
D3DCompiler.lib
Effects11d.lib
dxerr.lib
我的下一个想法是我的卡与 D3D11 不兼容。然而,这种情况并非如此。这是输出dxdiag
:
任何有关可能导致 E_FAIL 的原因的帮助将不胜感激。
c++ - DirectX 11 帧缓冲区捕获(C++,无 Win32 或 D3DX)
我想使用 DirectX 11 将我的前缓冲区或后缓冲区的内容捕获到一个字节数组中,然后我可以将其用作纹理或用作创建文件的源。到目前为止,我有一个交换链设置,发生了很多渲染以及以下代码 - 我确保在调用 Present 之后调用它们。
它总是给我零阿尔法的黑色。
我通常可以选择 GDI 互操作来使用 BitBlt 从交换链中复制位图 - 但是我有限制,这意味着这不是一个有效的解决方案。
此外,包含一些功能的 D3DX 库也是不可能的。
format - 从 R8G8B8A8_UNORM 资源创建 R32_UINT 视图
我需要使用 DirectCompute 进行图像编辑 - ala:http: //msdn.microsoft.com/en-us/library/ff728749%28v=vs.85%29.aspx
我的后备缓冲区是 R8G8B8A8_UNORM,我需要创建一个格式为 R32_UINT 的 UAV,以便我在计算着色器中同时读取和写入。
当我这样做时,从我的调试输出中引用:
“CreateUnorderedAccessView:创建视图时,格式(0x2a,R32_UINT)无效;资源已使用完全限定的格式创建,该格式不可转换(0x1c,R8G8B8A8_UNORM)”
引用上面链接中的文档:
“大多数每元素 32 位格式支持转换为 DXGI_FORMAT_R32_UINT”
我错过了什么吗?
performance - 具有 7 个后台缓冲区的 DirectX 11 交换链
我有一个以桌面模式在 Windows 8 上运行的专有媒体播放器。运行时 DirectX 版本是 11,但原生图形驱动程序支持 DirectX 9。
在一些具有完全相同设置的计算机上,我看到实际交换链的后台缓冲区计数为 2,性能非常好,而在其他一些计算机上则相反缓冲区计数为 7,并且有丢帧。
我没有该播放器的源代码,想知道在运行时确定不同的后台缓冲区计数的原因可能是什么。
有人可以解释为什么这样的后缓冲计数会导致性能发生这种变化吗?或者只是将我指向解释后缓冲区编号含义的相关文档?
(更多调试信息:使用 GPUView 我看到当后备缓冲区计数为 2 时,硬件以同步模式工作,即每秒 VSync 中硬件队列中的一个数据包(剪辑帧速率为 30fps),当 7 个后备缓冲区的工作是一起完成 5-7 帧,然后是一些空的 VSync,然后再次 5-7 帧,依此类推)。
先感谢您!
c++ - 我的纹理采样器应该如何渲染位图字体/精灵?
我有一个纹理并且很好奇纹理采样器应该是什么来采样精灵纹理?我正在使用 DirectX11,但如果您知道 DX9/10 应该是什么,我相信它是可以转移的。
我试过了
尽管在渲染时,似乎存在伪影,并且看起来并不像应有的那样清晰。
这是人工制品的一个例子。顶部带有浅蓝色背景的文本可以看到伪影(例如,A 和 C)。黑色背景的底部文本是原始图像。
directx - 单个 Present 之前的多个常量缓冲区更新
我正在使用 SlimDX/D3D11 编写粒子系统管理器,并且发现常量缓冲区存在一些问题。
我的粒子系统管理器可以同时绘制多个具有不同物理特性的粒子系统,并且基于XNA的Particle 3D样本。绘制操作的总体思路是:
- context.ClearRenderTargetView(...)
- 渲染粒子
- 交换链.Present()
“渲染粒子”操作是这样实现的:
- shaderTimeGlobalVariable.Set(currentTime)
- 对于着色器技术的每个通道:
- 申请通行证
- 对于每个粒子系统:
- 使用物理常量设置常量缓冲区 (EffectConstantBuffer.SetRawValue)
- 发出一个或多个 context.Draw 调用
我的问题是,似乎只考虑了最后一个常量缓冲区调用,从而迫使所有粒子系统具有相同的物理特性。
所以,首先:我怀疑这是正确/预期的,我错过了一些关键点。谁能澄清我错过了什么?
我希望一个解决方案是将粒子的物理特性插入到顶点缓冲区中,每个顶点的成本大约增加 12 个字节,因此对于我正在使用的每个物理系统来说,成本会增加 12k 到 120k。如果可能的话,我想避免的事情:还有其他选择吗?
directx-9 - Convert ID3D11Texture2D into a memory buffer
How can we convert ID3D11Texture2D
into a memory buffer? I have ID3D11Texture2D*
and need to read data from it to a memory buffer.