- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每次查看 SharpDX 代码并尝试遵循 DirectX 文档时,我都会遇到困难。有没有一个地方清楚地列出了每个编号的类映射到什么以及它们存在的原因?
我说的是这样的事情:
DXGI.Device
DXGI.Device1
DXGI.Device2
DXGI.Device3
DXGI.Device4
SharpDX.Direct3D11.Device
SharpDX.Direct3D11.Device1
SharpDX.Direct3D11.Device11On12
SharpDX.Direct3D11.Device2
SharpDX.Direct3D11.Device3
SharpDX.Direct3D11.Device4
SharpDX.Direct3D11.Device5
SharpDX.Direct3D11.DeviceContext
SharpDX.Direct3D11.DeviceContext1
SharpDX.Direct3D11.DeviceContext2
SharpDX.Direct3D11.DeviceContext3
SharpDX.Direct3D11.DeviceContext4
using (DXGI.Device3 dxgiDevice3 = this.device.QueryInterface<DXGI.Device3>())
using (DXGI.Factory3 dxgiFactory3 = dxgiDevice3.Adapter.GetParent<DXGI.Factory3>())
{
DXGI.SwapChain1 swapChain1 = new DXGI.SwapChain1(dxgiFactory3, this.device, ref swapChainDescription);
this.swapChain = swapChain1.QueryInterface<DXGI.SwapChain2>();
}
最佳答案
SharpDx 是 DirectX 的一个非常薄的包装器,并且 DirectX 中的几乎所有内容都在 SharpDx 中表示为带有一些命名和调用约定的传递,以适应 .net 世界。
SharpDx 上的真实文档基本上不存在,因此您将不得不做其他人所做的事情。如果您从 SharpDx 中的某些内容开始,那么直接查看 SharpDx API 列表和头文件以了解正在表达的底层 DirectX 函数。获得 DirectX 函数的名称后,您可以阅读 MSDN 文档以了解该函数的工作原理。如果您从 DirectX 中的某些东西开始,那么首先查看 MSDN 以了解它是如何工作的以及它是如何命名的,然后转到 SharpDx API 和头文件以了解该函数是如何在 SharpDx 中包装(命名和公开)的。
对于您提出的具体问题, SharpDx 设备编号标识正在包装的 Direct3D 版本 .Direct3D 11.1 device
==> ID3D11Device1
==> SharpDX.Direct3D11.Device1
Direct3D 11.2 device
==> ID3D11Device2
==> SharpDX.Direct3D11.Device2
Direct3D 11.3 device
==> ID3D11Device3
==> SharpDX.Direct3D11.Device3
等等。
自然,每个版本都有一个稍微不同(“改进”)的界面。较低的版本号几乎可以在任何地方使用,而较高的版本号包括可能需要您的视频卡和/或操作系统的特定功能的附加功能。您可以在 here 的部分中了解每个版本的 API。 .
例如,添加到 ID3D11Device5 接口(interface)的新方法的描述(即 ID3D11Device4 以来的新方法)是 here .在这种情况下,Device5 添加了创建栅栏对象和打开共享栅栏句柄的功能。
当示例代码使用特定的设备号时,通常是因为代码需要一些以前版本的 Direct3D 中没有的功能。一般来说,您希望尽可能使用编号最低的设备(和工厂等),因为这将允许您的代码在最广泛的机器和视频卡上运行。
如果您找到创建 SharpDX.Direct3D11.Device1
的示例代码但似乎没有使用SharpDX.Direct3D11.Device
中的方法之外的任何方法,这可能是两个原因之一。首先,作者可能知道后面的示例将需要 Direct3D 11.1 之前不存在的方法或字段。其次,作者可能知道所有能够运行该示例的显卡和操作系统都将能够运行 Direct3D 11.1。
对于刚入门的人,我建议您坚持使用 Direct3D(和 Direct2D)版本 11.1,因此 DXGI.Device1
, SharpDX.Direct3D11.Device1
和 SharpDX.Direct3D11.DeviceContext1
.这些很可能在您遇到的任何机器上运行。仅当您确实需要该版本中未出现的某些功能时才增加版本号。
另一个提示:如果您阅读了有关某些 Direct3D 或 Direct2D 功能的主题,并且您似乎无法在 SharpDx 的任何地方找到它,请查看 Direct3D API 以查看哪个版本号首先包含该功能。然后浏览该版本的 SharpDx API(或更好的头文件),直到您看到一个类似命名的元素。它可能以一种意想不到的方式包装,但 AFAIK 它全部暴露在外,即使你很难找到它。
关于directx - SharpDX 编号的类(class),我在哪里可以找到他们各自的文档/职责?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52999484/
我目前正在使用SharpDX SourceVoice在WP8应用程序中播放wav文件,该文件可以很好地播放单个文件。 但是,我找不到在没有在SourceVoice上注册事件并排队下一个文件的情况下循环
如何在构建时在 SharpDX 中编译顶点和像素着色器?您可以在“Direct3D Rendering Cookbook”中读到的方法是使用 HLSLCompiler.CompileFromFile。
我正在使用 SharpDX 2.5.0 并且我有一个游戏类,我尝试禁用固定时间步长,但是它似乎不起作用,我仍然得到 59-60 FPS。我只画了一个犹他茶壶,所以我很确定它一定能以更高的速度(比如 1
我使用 easyhook 和 SharpDX 从 DirectX 游戏中获取 fps 数据。有时它有效。但是,当我下次启动它时(可能只是几分钟后),它会抛出异常 System.IO.FileNotFo
我在弄清楚如何使用 SharpDX 设置动态 VertexBuffer 和 IndexBuffer 时遇到了很多问题。 我必须在用户按下屏幕的地方生成三角形。 我想我必须设置一个转换函数,将我的屏幕坐
我正在尝试在我的窗口大小更改后立即对后备缓冲区实现更新。所以我的对象不会被拉伸(stretch)。所以我试了一下 _renderForm.Resize += OnRenderFormOnResize;
我正在使用 SharpDX 编写 C# Direct2D 应用程序,但是我可以理解 C++ 中提供的答案/示例。 我想呈现文本并更改某些字符的宽度以使其看起来像图片: 字母B扩大到200%,字母D缩小
我正在尝试从 SharpDX.DataStream 获取像素。我每秒执行此操作 25 次,这会导致大量内存使用。我想我缺少某种清理工作。 一旦我开始调用 GetColor 方法,内存使用量就开始上升。
我正在尝试让“SharpDX.Direct3D11.DeviceContext.OutputMerger.Blendstate”工作。没有这个,我就有了不错的场景(带有纹理的多边形,用于太空射手)。我
我正在尝试让“SharpDX.Direct3D11.DeviceContext.OutputMerger.Blendstate”工作。没有这个,我就有了不错的场景(带有纹理的多边形,用于太空射手)。我
此代码每 100 毫秒运行一次。内存使用量不断增加,直到达到 1.5 GB,然后崩溃。 void takeScreenShot() { Surface s; s = CaptureSc
我们正在使用 SharpDX 开发 Windows 8 Metro 应用程序.现在我们必须在 Rectangle 中声明一组字符串.为此,我们尝试使用 SharpDX.DrawingSizeF 找出字
我是 sharpdx 的新手。 我目前的工作流程是用户可以使用网络摄像头或任何摄像头设备拍摄照片。现在我正在为用户开发新功能。用户可以在图像顶部绘制任何内容,例如 (mspaint drawing).
首先,如果这是问这个问题的错误地方,我深表歉意,我在其他地方找不到答案。 我已将 SharpDX 引用导入到我的 C# 项目中,但是,SharpDX.Windows 引用不存在。我试过从网站下载它并使
SharpDX 有一个 RenderLoop,它在渲染循环中运行给定的委托(delegate): RenderLoop.Run(m_RenderForm, () => { // Do stuf
我在互联网上四处寻找代码,试图找到允许我从常规字体(而不是 Sprite 字体)绘制文本的代码,但只找到了对我毫无帮助的片段。 有人有完整的源文件可以让我使用 SharpDX 和 D3D11/Dire
(这个问题是基于对 this 其他问题的进一步调查,但不是同一个问题,这是关于绘画问题的非常具体的问题。) 我正在尝试绘制一个重叠在目标窗口上的透明表面,问题是我不知道如何将其涂成透明,所以现在我的表
我正在将 SharpDX.WPF 项目用于 WPF 功能,与 SharpDX 附带的工具包相比,它似乎是一个易于理解的低开销库(具有相同的问题!) 首先:我使用以下方法为最新的 SharpDX 修复了
我已经使用SharpDX.XAudio2了几天,虽然事情在很大程度上是积极的(到处都是奇怪的软件怪癖),但以下问题却使我完全陷入困境: 我正在使用VS2015在C#.NET中工作。 我正在尝试同时播放
我在 Direct2D 下使用 SharpDx 开发 Metro 应用程序。我使用 deviceContext 画了一些图片。如何将图片保存为 png 文件? 最佳答案 解决方案: public
我是一名优秀的程序员,十分优秀!