问题标签 [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.

0 投票
3 回答
13056 浏览

c++ - WPF 和 DirectX 11 通过 D3DImage

我想从非托管 C++ 代码中使用 DirectX 11,并将 WFP 用于 GUI。SlimDX 不适合我。我找到了使用 DirectX 10 制作 WPF 的解决方案:

WPF 和 DirectX 10 通过 D3DImage

但是我无法使用 DirectX 11 来处理它。只是带有两个按钮的空白屏幕。有谁知道如何使 WPF 与 DirectX 11 一起工作。

我还看到,当我刚刚运行此示例时,Intel i5 750(Windows 7 64 位,NVidia Geforce 430)的 CPU 使用率约为 4-5%。我认为它太多了.. 是否可以减少 CPU 使用率?

你可以在这里找到我的代码:http: //www.gamedev.net/topic/619534-wpf-directx-11-via-d3dimage/

0 投票
2 回答
15001 浏览

directx - 我如何知道我的显示驱动程序是否支持 DirectX?

在此处输入图像描述我想知道我的显示驱动程序是否支持 DirectX 11?我如何知道显示驱动程序的能力?特别是,我怎么知道它是否支持着色语言?

0 投票
1 回答
1973 浏览

directx-9 - DirectX 11 功能级别

我编写了一个使用 DirectX 11 的程序。创建设备时,我使用功能级别 9.0c(具体来说是 D3D_FEATURE_LEVEL_9_3)。

我对功能级别的初步理解是,选择一个可以让程序与显卡兼容,显卡不支持更高版本的 DirectX。

据我所知,DirectX 11 可能没有安装在 Windows Vista 上(至少没​​有正式安装),但想象一下,当所有图形功能在 Windows Vista 上运行时,我是多么惊讶。

问题是:为什么?如何?DirectX 11 是否如此智能,以至于在没有 11 个可用的情况下使用 DirectX 9 二进制文件?这可能是 DirectX 10 的功能吗?也许微软启用了对 DirectX 11 的 Vista 支持?一定有什么,我不相信这种巧合……

MSDN 对此事保持沉默。或者至少我找不到合适的话题。

对此有何解释?

0 投票
2 回答
3173 浏览

c++ - 初始化directX 11时出现未处理的异常错误

当我尝试初始化和 directX 11 时,我收到以下错误:

错误:

当然没有语法错误。操作系统:Windows 7 高级版 64 位。DirectX 版本:11(嗯,嗯!) IDE:Visual Studio 2010(VC++)

代码:

“d3dclass.h”

“d3dclass.cpp”

一点更新:我有一个名为 m_D3D 的变量(指针),它是从另一个名为 graphics.cpp 的文件中声明的。在 D3DClass 中调用构造函数以将所有变量初始化为 0(NULL) 时发生错误。当我在这个指针处检查 m_D3D 的值时,我发现以下消息:

m_D3D CXX0017:错误:未找到符号“”

请指教。

干杯

0 投票
2 回答
4850 浏览

slimdx - 如何将纹理加载到着色器 (DirectX11/SlimDX)

我有一个现成的 Texture2D;我有一个显然可以工作的着色器纹理采样器和着色器纹理变量,我可以将它放入 Texture2D。

唯一的问题是,我不知道如何在 DirectX11 中将纹理加载到着色器中——要么 Google 没有帮助,要么只是我无法构建好的搜索词。

我需要什么:将采用 Texture2D 并将其加载到着色器中的代码。例如,有关如何执行此操作的链接。

无论如何,这是我的着色器代码:

谢谢。

0 投票
2 回答
8393 浏览

constants - DirectX11 设置着色器常量

拥有 XNA 背景后,我尝试创建一个简单的 DirectX11 应用程序。现在我尝试弄清楚如何设置着色器常量,例如投影矩阵等。我正在阅读有关常量缓冲区的内容 - 但是没有简单的方法可以在渲染之前设置一些常量,而不使用缓冲区?

0 投票
2 回答
6321 浏览

directx-11 - 如何在 DirectX11 中设置 RenderState?

如何在 DirectX11 中设置渲染状态?

device->SetRenderState() 似乎不再存在。

0 投票
1 回答
1176 浏览

visual-studio-2010 - VisualStudio 2010 - 单步执行着色器代码?

调试时是否可以在 VisualStudio2010 的 DirectX11 应用程序中单步执行着色器代码?尤其是在使用参考设备时 - 所以着色器代码将在软件中执行。那么实际上应该可以使用调试器单步执行它,不是吗?

我看到了一些来自 nvidia (parallel nsights) 和 amd (gpu perfstudio) 的高级工具,但它们看起来非常复杂。

我不关心性能,我只是尝试在着色器代码中查找错误。

0 投票
2 回答
6394 浏览

c++ - 为什么 IDXGISwapChain::SetFullscreenState 无法全屏显示?

我在游戏中使用 DX11,我希望能够可靠地全屏启动游戏。这意味着我可以选择以下两种方式之一:在交换链描述中指定全屏,或者启动窗口并立即切换到全屏。根据 MSDN(http://msdn.microsoft.com/en-us/library/windows/desktop/bb174537(v=vs.85).aspx),您应该在窗口模式下创建交换链,然后切换到全屏如果你想以全屏模式开始,这正是我正在做的。

问题是这样的:当我调用IDXGISwapChain::SetFullscreenState(TRUE, NULL)时,调用失败并返回 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE 错误代码。根据 MSDN,可能发生这种情况的原因如下:

  • 该应用程序正在终端服务器上运行。
  • 输出窗口被遮挡。
  • 输出窗口没有键盘焦点。
  • 另一个应用程序已处于全屏模式。

第一种情况不成立。我的远程调试器用完了 Visual Studio 2010,所以除非远程调试器使用终端服务器,否则我可以使用那个。第二种情况也不成立;桌面上没有其他窗口。第四种情况也不成立;同样,桌面上没有其他窗口。

这留下了第三种选择。键盘焦点。根据我在网上收集的信息,我创建了此代码以在创建 DX11 图形设备之前获得键盘焦点。

此调用成功,但我仍然没有全屏显示。我也找不到替代方法。但是,我确实知道可以可靠地窃取键盘焦点,因为我看到 Windows 一直在这样做,而且我已经看到其他应用程序这样做了。

所以我的问题是:我怎样才能可靠地全屏显示?或者我怎样才能可靠地为我的应用程序获得键盘焦点?

编辑:在阅读了几次之后,我意识到我错过了一些关键信息。如果我通过双击直接使用 .exe 或将其放入目标计算机的启动菜单中,应用程序始终以全屏模式正确启动(尽管 Windows 防火墙消息仍然使其无法全屏显示,但我没有需要它来工作)。唯一的问题是当应用程序由另一个应用程序启动时,或者如果它是使用 Visual Studio 远程调试器启动的。

0 投票
1 回答
491 浏览

directx - 采样 BC5_SNORM 纹理会产生不正确的值范围

我正在使用 Direct3d 11,我遇到了一些奇怪的事情。我已经拍摄了一张法线贴图并将其编码为 DDS 文件两次。一次使用R8G8B8A8_SNORM编码,一次使用BC5_SNORM

接下来我使用D3DX11CreateShaderResourceViewFromFileD3DX11GetImageInfoFromFile加载每个纹理。当我在像素着色器中对这些纹理进行采样时,我发现R8G8B8A8_SNORM纹理返回的值在 [-1,1] 范围内,这是我对 SNORM 纹理的期望。但是,BC5_SNORM纹理返回的值在 [0,1] 范围内,这对我来说没有任何意义。

我用我的调试器和 PIX 进行了三重检查。纹理的格式是正确的(BC5_*S*NORM),所以我不知道为什么它不返回有符号值。