问题标签 [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.
directx - DirectX Demo 不在屏幕上绘制任何内容
我现在正在学习 DirectX 11,并且正在尝试“开始 DirectX 11 编程”一书中的演示之一。我按照书籍指南制作了一个处理窗口创建和销毁的基类(包括 d3d11 设置)。所有其他演示都基于这个类。所以我正在编写 Triangle 演示,其目的是绘制一个 2d 三角形。下面是 Triangle 类的实现:
现在,当我运行它时,屏幕会清除并采用我指定的颜色,但屏幕上没有绘制任何内容。只是为了确保我刚刚编译了本书提供的源代码,它工作得很好。使用的着色器也相同。我的电脑确实支持directx 11。我认为大多数名称都是不言自明的,但你可以问我是否令人困惑。我已经用其他演示测试了我的框架,它运行良好。我似乎无法在我的代码中找到错误。
c++ - 错误:未定义 ID3D11Texture2D。
我包含了 d3d11.h 标头,但是当我声明这种类型的指针时:
它说 ID3D11Texture2D 没有定义。
那么我该如何解决这个问题呢?
c++ - PIX DirectX 11 调试像素错误
我最近更新了我的 DirectX 11 (C++) 应用程序以支持双显示器、双窗口。从那时起,当我尝试在 PIX 调试器中调试任何像素时,我收到以下错误:
我不再使用 D3D11CreateDeviceAndSwapChain,而是使用 D3D11CreateDevice 然后 CreateSwapChain 为两个窗口中的每一个(每个监视器一个)创建单独的交换链。在进行更改时,我使用了 SDK 示例 MultiMon10 作为参考,但是通过 PIX 运行 MultiMon10 示例项目时,我仍然可以毫无错误地调试像素。所以这不仅仅是“CreateSwapChain”对 PIX 不友好的问题。
任何想法可能导致此错误?过去,调试像素和逐步通过着色器帮助了我很多,我不想失去这种能力。
c# - 在 C# 中使用 DirectX11 和 SlimDX 的 Nvidia 3d 视频
美好的一天,我正在尝试使用 nvidia 3DVision 和两个 IP 摄像机显示实时立体视频。我对 DirectX 完全陌生,但尝试在此站点和其他站点上完成一些教程和其他问题。现在,我正在为左眼和右眼显示两个静态位图。一旦我的程序的这部分工作正常,这些将被我相机中的位图所取代。这个问题NV_STEREO_IMAGE_SIGNATURE 和 DirectX 10/11 (nVidia 3D Vision)对我有很大帮助,但我仍在努力让我的程序正常工作。我发现我的快门眼镜开始正常工作,但只显示右眼的图像,而左眼保持空白(鼠标光标除外)。
这是我生成立体图像的代码:
}
我尝试了各种将立体图像的 Texture2D 包括签名 (3840x1081) 复制到后台缓冲区的方法,但是我尝试过的方法都没有显示这两个图像......任何帮助或评论将不胜感激,Ryan
c++ - DirectX11 网格加载 - 由于纹理而出错(使用 SDKmesh.h)?访问冲突读取位置 0x00000000
我试图从我的 DirectX 11 应用程序中的文件加载网格。作为基础,我采用了我自己的代码(现在渲染了一些基元),我想添加来自 DirectX 11 SDK 示例的“基本 HLSL”项目的网格创建/渲染代码(它使用例如 SDKmesh.h 和 DXUT.h从样品。
网格代码为:
我还注意到,在示例中,有一个不同的顶点布局,所以我将着色器的类代码更改为(代码将在着色器的类构造函数中执行一次,在网格创建之前):
编译工作。但是在执行代码的过程中我得到了错误:
在 SDKmish.h 附近:
准确地说:
当我评论该函数的几行代码和代码中的某些内容时(我现在不记得那是哪一行了),我在窗口中看到了网格,但没有纹理。所以我猜这是有纹理的东西?我在正确的文件夹中有微小的模型和纹理,我还像上面发布的那样设置了顶点布局。
我还应该做什么?
c++ - 在direct3d11中映射资源和分配数据
嗨,我正在使用着色器,我有一个关于我是否可以在这里做某事的快速问题。当将数据映射到缓冲区时,我通常会看到它是这样完成的。定义类或结构来表示缓冲区中的内容。
然后在创建输入布局时设置输入元素描述,我得到了所有这些。现在,当我看到人们在渲染之前更新缓冲区时,我看到它大多是这样完成的:
其中分配的值实际上是有效的 D3DXMATRIX。看来没关系,如果我这样做会不会有什么问题?
矩阵是一个有效填写的 MatrixBuffer 对象?由于某些特殊的直接 X 处理此问题,以后会不会产生可怕的后果,还是可以?
windows - DX11 交换链仅显示第一帧。在它和黑色图像之间翻转
当我运行我的 3d 场景时,它只渲染第一帧,然后在它和黑屏之间翻转,导致大量闪烁。我认为这是我的交换链设置不正确,但我真的不知道。
这是我设置它的代码。它几乎是从 Microsoft 示例中复制而来的。
现在的代码:
在我看来,这很简单,所以我真的不明白为什么它不起作用。
场景一直在运行。更新函数每帧运行一次。
另外,如果我在 PIX 中检查渲染,一切都很好。我得到了我期望的渲染结果。它只是没有出现在屏幕上。
有任何想法吗?谢谢!
c++ - direct x 11 智能地创建顶点缓冲区
我有一个难题,简直把我难住了。假设我有几个着色器,它们都具有不同的顶点类型,如下所示:
现在假设我有一个包含所有这些数据的模型。我不能完全将它们全部放在同一个缓冲区中并按照我选择的所有 3 个进行渲染,因为数据没有为所有这些缓冲区正确布局。我只看到两个选项可以使这成为可能,它们都一样痛苦。
1)我可以在 ram 中有一个大缓冲区来保存所有数据,然后每次绘制调用,我从着色器对象中获取顶点类型并创建一个具有正确信息的新顶点缓冲区。如您所见,这将非常缓慢。
或者...
2) 我可以在模型初始化时创建多个 ID3D11Buffers,其中一个缓冲区具有位置和颜色,一个具有位置、texcoord 和法线,一个具有位置、texcoord、法线、副法线和切线,以及所需的尽可能多的缓冲区对于模型具有信息的任何其他顶点类型。相比之下,这会抹杀您可用的 vram,也使其成为 nogo。
我看不出有任何其他方法可以做到这一点。你们其他 d3d 人是如何做到这一点的?
c++ - 用c ++将信息写入空窗口
所以我正在构建这个游戏引擎,发现很难用 D3D11 在主游戏窗口中创建某种带有调试信息的叠加层,或者根本无法绘制文本,所以我想我会创建另一个窗口包含我的调试数据。
我的窗口创建得很好,但我不知道如何将调试信息写入其中。我不想使用 windows 窗体设计器,因为那将不得不将我的项目转换为我不想要的 CLR 项目。
我现在已经至少搜索了 3 个小时(老实说)并尝试了各种解决方案,但它们中没有一个看起来真正实用/它们不起作用。
我想写的调试信息来自全局浮点值。一个例子是CAM_POS_X
它保存一个浮点值,该值指示相机当前位于哪个 X 坐标。
需要这样的东西:
|SiriusAlpha 0.1 调试窗口_ |
|当前X位置:CAM_POS_X
|
|当前 Y 位置:CAM_POS_Y
|
|当前Z位置:CAM_POS_Z
|
|当前偏航:CAM_YAW
_ __ _ __ |
|当前音高:CAM_PITCH
_ __|
|当前的FPS:CUR_FPS
_ _ ____ |
所有这些值都不一定是浮点变量。它们可以是字符串、双精度数、整数甚至布尔值。
如果有人愿意向我解释如何在 D3D11 中执行此操作,并且我可以跳过整个调试窗口 schenennigans,我会更高兴。
否则,如果有人可以向我解释这是如何完成的,我会很高兴。
gpgpu - Crossfire/SLI 是否有利于 Compute Shader 的性能?
我正在研究 DX11 计算着色器。我想知道如果再添加一张带有 Crossfire/SLI 的视频卡,性能是否会有所提升。或者在不使用 Crossfire/SLI 的情况下再添加一张视频卡。
有没有人尝试过这个?