问题标签 [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 回答
5358 浏览

c# - SlimDX 和 WPF (DirectX 11)

我想使用 SlimDX (DirectX 11) 在 WPF 中呈现图像的内容。

问题是我找不到将 SwapChain 链接到 D3DImage 的方法。(DirectX 11 示例使用 SlimDX RenderForm。)

0 投票
1 回答
1069 浏览

directx-11 - 为什么 D3DX11CreateShaderResourceViewFromMemory 只上传我的纹理的部分副本?

我对 D3DX11CreateShaderResourceViewFromMemory 辅助函数有疑问。

我从文件或 ZIP 中读取了一些纹理并将原始字节和长度传递给辅助函数,但是只有部分纹理被上传(由 PIX 确认)。我尝试手动调整长度,但无济于事。这是从文件加载纹理的代码:

这只是我用来调试此问题的示例代码,我将其范围缩小到文件加载和 D3DX 辅助函数。现在,如果我这样做:

它工作得很好。

关于为什么它不会完全上传纹理的任何想法?

0 投票
2 回答
1931 浏览

c++ - DirectInput8Create 失败:E_INVALIDARG

我将 DirectInput 与 Direct3D 11 一起使用,并为 x64 进行编译,我从这一行得到一个 E_INVALIDARG:

当我设置一个断点来查看正在发生的事情时,我没有发现任何无效参数的迹象。我的 hInstance 是有效的,_d8Input 指针也是有效的,并且 DIRECTINPUT_VERSION 设置为 0x0800。

我之前使用过 D3D9 的直接输入,方式完全相同,没有任何问题。我错过了什么?

谢谢。

0 投票
3 回答
6993 浏览

c++ - 您如何使用 CheckMultisampleQualityLevels 并启用多重采样

我正在学习 directx 11 并尝试设置多重采样。出于某种原因,互联网上的每个教程都禁用了多重采样,并且从不讨论如何启用它。

首先:我四处搜索,找不到任何如何使用CheckMultisampleQualityLevels. 似乎您需要创建一个设备,调用该函数,找出可用级别,然后销毁该设备并使用您想要的设置创建一个新设备。这是正确的方法吗?或者,还有更好的方法?

其次,如何启用多重采样?因为我不确定如何开始CheckMultisampleQualityLevels工作,所以我尝试为DXGI_SWAP_CHAIN_DESC.SampleDesc.Countand输入一些值DXGI_SWAP_CHAIN_DESC.SampleDesc.Quality(比如 4 和 4),当它运行时,什么都没有显示(如果我输入像 33 和 2 这样的疯狂值,它会出错)。除了交换链描述之外,这是否需要设置在其他地方,或者着色器是否会以某种方式干扰它(我设置了基本的灯光和纹理着色器)?

我有一台 GTX 570,所以我知道它可以支持大多数 AA 设置。我正在关注这组教程,以防有任何帮助:http ://rastertek.com/tutindex.html

0 投票
4 回答
44587 浏览

c++ - How do you draw text in DirectX 11?

In DirectX 10 you could use the font interface provided by D3DX10. In DirectX 11 you are supposed to use DirectWrite. But it looks like DirectWrite doesn't speak natively to Direct3D? Is there something basic I'm missing? How do you draw simple text with DirectX 11?

0 投票
2 回答
4652 浏览

c++ - 有没有好的 DirectX (3D) DirectWrite 教程?

我正在将我的一些directx10 代码重构为directx11,并试图为我的文本函数找出DIrectWrite。从 MSDN,我听说他们正在将所有内容都切换到这个,并且 directwrite 现在包含在 direct3d 中。但是,嗯 - 我找不到一个教程,它实际上显示了使用 directwrite 的 3d 渲染文本。有人知道一个例子吗?

0 投票
3 回答
6923 浏览

c++ - D3D11:如何绘制简单的像素对齐线?

我试图用 D3D11 在两个顶点之间画一条线。我在 D3D9 和 D3D11 方面有一些经验,但在 D3D11 中画一条线似乎是一个问题,它从一个给定的像素开始,到另一个像素结束。

我做了什么:

  1. 我在每个顶点的像素坐标上添加了 0.5f 以适应纹素/像素坐标系(我阅读了 Microsoft 页面以了解 D3D9 和 D3D11 坐标系之间的差异):

    f32 fOff = 0.5f;ColoredVertex newVertices[2] = { { D3DXVECTOR3(fStartX + fOff, fStartY + fOff,0), vecColorRGB }, { D3DXVECTOR3(fEndX + fOff, fEndY + fOff,0), vecColorRGB } };

  2. 生成一个正交投影矩阵以适应渲染目标:

    D3DXMatrixOrthoOffCenterLH(&MatrixOrthoProj,0.0f,(f32)uRTWidth,0.0f,(f32)uRTHeight,0.0f,1.0f); D3DXMatrixTranspose(&cbConstant.m_matOrthoProjection,&MatrixOrthoProj);

  3. 设置 RasterizerState、BlendState、视口、...

  4. 将顶点绘制为 D3D11_PRIMITIVE_TOPOLOGY_LINELIST

问题:线条似乎短了一个像素。它从给定的像素坐标开始,非常适合它。线条的方向看起来是正确的,但是我希望线条结束的像素仍然没有着色。看起来这条线只有一个像素短......

任何教程解释了这个问题还是有人有同样的问题?我记得在 D3D9 中这并不难。

请询问您是否需要更多信息。

谢谢,斯特凡

编辑:找到 d3d10 的光栅化规则(d3d11 应该相同):http: //msdn.microsoft.com/en-us/library/cc627092%28v=vs.85%29.aspx#Line_1

我希望这能帮助我理解......

0 投票
3 回答
6243 浏览

c++ - D3D11:如何将 GDI 文本绘制到 GXDI 表面?(没有 D2D)

在使用 GDI 和 D3D11 将文本绘制到纹理上时,我需要一些帮助。我尝试使用 D2D/DirectWrite,但它只支持 D3D10 而不是我需要的 D3D11。到目前为止我尝试的一切都失败了......现在我想使用 GDI 方法在纹理中写入。所以我用这个参数创建了一个纹理:

然后我从这个纹理创建了一个普通的 RenderTargetView,就像微软在这里所说的那样:http: //msdn.microsoft.com/en-us/library/ff476203%28v=vs.85%29.aspx

下一步:获取 DXGI 接口:

在渲染功能上,我这样做:

问题是,在 GDI 绘图之后纹理仍然是空的(也用 PIX 测试过)。一切正常,没有错误消息。

我希望任何人都可以解释它是如何工作的。

谢谢,斯特凡

编辑:也尝试过GetDC(FALSE,&hDc)(根据文档):相同的结果->没有。

0 投票
2 回答
2029 浏览

multithreading - 延迟上下文不渲染任何东西

我试图了解多线程渲染在 dx11 中是如何工作的,所以我开始时没有任何线程,只创建一个延迟上下文,并尝试用它渲染三角形


代码在这里https://gist.github.com/998406 我以这种方式修改了 SlimDX MiniTri 示例-> 使用延迟上下文

接下来我将着色器绑定到它并渲染它

然后尝试获取命令列表并执行它

我期望看到的是 2 个三角形,但它只呈现即时上下文,但如果我在延迟上下文中清除屏幕,如 deferredContext.ClearRenderTargetView(renderView, Color.Tomato); 我的屏幕现在是番茄色,但仍然没有三角形


同样,当我添加此延迟上下文 PIX 停止工作时,女巫意味着我做错了什么

0 投票
1 回答
2038 浏览

render - DirectX 11 SwapChain::当前问题

我手头有一个很奇怪的问题。我正在使用 directx 11 来制作我自己的游戏框架/引擎,它一直运行良好,直到我尝试实现平截头体剔除,这给了我非常奇怪的帧速率问题。

我稍微简化了这个问题,所以它发生在我没有进行任何截锥体剔除的情况下。现在我的屏幕上渲染了 250 个模型,调试中为 70 fps。我已经做到了,如果我按住按钮 H 它会跳过我的模型在我的 Application::Render 中的渲染,但是如果我这样做然后再次松开按钮,我的帧率在大多数情况下都会达到 40 左右甚至大约 4 fps。分析向我展示了它是 SwapChain::Present,它突然需要比它应该的更长的时间。

在 Release 中,这是同样的问题,只有当我附加了调试器时才会发生这种情况。我自己真的想不出来这个。

尝试重建和重新启动。

我现在的功能:

我的应用程序::渲染功能:

这是我的分析在按 H 停止渲染模型之前的外观:

在我按下 H 一秒钟后释放它,以便再次渲染模型:

我也尝试过,不是在按 H 时不渲染模型,而是在按 C 时创建一个具有相同效果的新模型。因此,如果在运行时渲染的模型数量以任何方式发生变化,我的帧率就会发疯。

如果我正在运行 fraps,则不会发生这种情况(要捕获该行为以便您可以看到它)。邓诺,如果这是任何线索。

固定的!看看下面的评论