问题标签 [direct3d11]
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 - 带有 DirectDraw (2d) 覆盖的 Direct3D 11
基本上,我想在 3d 交换链上进行 2d 绘图。但是我的代码注入了另一个程序,我没有源代码。
我可以画图,但它仅在使用 DXGI_FORMAT_B8G8R8A8_UNORM (BGR) 格式创建交换链时才有效。
最初,该程序使用 DXGI_FORMAT_R8G8B8A8_UNORM (RGB),当我将其切换到 BGR 时,程序渲染到窗口/屏幕之外。几乎所有东西都更大。
有没有办法使用 RGB 将 Direct3D 11 与 2D 互操作,或者使应用程序渲染与 BGR 正确工作?
c++ - 导致崩溃的矩阵
我的 Direct3D11 应用程序有一个奇怪的问题,我已经尝试解决了几个小时。问题在于该方法:
一切都很好,直到它到达那条线:
不知何故,它会导致应用程序崩溃(切换到不响应是正确的)。
以下是实际调用的样子:
事先,顶点和像素着色器编译得很好,所以这不是问题。很可能我在 xnamath 上做错了(我对它完全陌生),但我不知道这可能是什么。提前致谢。如果需要,我会提供更多信息。
编辑@1:通过数十项更改,我设法让投影和世界矩阵工作。虽然我仍然无法设置视图矩阵。我更改了代码,使其与实际代码匹配,并去掉了不重要的部分。
编辑@2:最后一分钟的突发新闻:XMMatrixLookAtLH 函数没有问题,因为我决定将结果保存到局部变量并且它可以工作,但是如果我想将结果矩阵分配给类成员,那么我会崩溃. 这当然很有趣。
directx - Direct3D 11 可以进行仅离屏渲染(无交换链)吗?
是否可以仅使用 Direct3D 11 渲染到纹理,即不创建交换链且不创建任何窗口?我已经尝试过了,我所有的 API 调用都成功了。唯一的问题是我从临时纹理下载的图片是黑色的。
我终于设法使用 PIX 捕获了完整的流(Parallel Nsight 似乎根本不起作用)。PIX 显示我的渲染目标也是黑色的,尽管我将其清除为蓝色。
我打算做什么有可能吗?如果是这样,一个人会怎么做?
directx - Direct3D 11不光栅化任何顶点
我正在尝试使用 Direct3D 11 在屏幕上渲染一个简单的三角形,但没有任何显示。这是我的顶点:
预期的输出是一个三角形,一个点在屏幕的左上角,一个点在屏幕的右上角,一个点在屏幕的左下角。但是,任何地方都没有渲染任何内容。
我没有执行任何矩阵转换,顶点着色器只是将输入直接传递给输出。一切似乎都设置正确,当我在 Visual Studio 2012 中使用图形调试器时,正确的顶点位置被传递给顶点着色器。但是,它直接从顶点着色器阶段跳到管道中的输出合并阶段。我假设这意味着没有任何东西被发送到像素着色器,这再次意味着向量在光栅化阶段被丢弃。为什么会这样?
这是我的光栅化状态:
我的视口(宽度/高度是与我的后台缓冲区匹配的窗口客户区,在我的测试设置中设置为 1024x576):
谁能看到是什么让光栅化阶段放弃了我的顶点?还是我的 D3D 设置的任何其他部分可能导致此问题?
visual-c++ - 未处理的异常@ClearRenderTargetView()
所以,我正在使用带有“板载”Windows SDK 8 的 Visual Studio 2012,编写 Direct3D11 应用程序,但我遇到了一个大问题。我有一个类可以处理 D3D11 之上的所有初始化、设置和绘制调用。我用它需要知道的所有数据正确地实例化了包含 D3D11 驱动程序类实例的应用程序类。
D3D11 驱动程序类构造函数获取应用程序的主窗口句柄并使用它将 D3D 挂钩到应用程序的主窗口。它正确地构建自己并返回app->run()
驱动主循环的调用位置。
在主循环中,调用该驱动程序来简单地测试绘制一个带红色的空白屏幕。观察调试信息,有问题的渲染目标是可操作的,创建是为了将交换链中的后备缓冲区绑定到管道。
renderTargetView
不为空。HRESULT 被验证为 S_OK。
如果我尝试在 D3D11 驱动程序类构造函数中调用 Draw 函数,它可以工作。它不会在调用之间被释放。
就像 Application 类的构造函数在 run() 函数之前没有完成一样,如果我尝试继续而不退出几个“帧”向前,则清除的渲染目标会显示为红色。有人可以启发我吗?我已经走投无路了。
它不为空。HRESULT 被验证为 S_OK。有报道称这已在 Windows 8 中得到修复,而 Win7 SDK 仍然受到影响。谷歌没有产生任何有用的东西,大多数人忘记为 OMGetRenderTargets 创建渲染目标视图(保持 NULL)或智能感知错过 OMSetRenderTargets。
c++ - 如何创建 3d 边界框?(直接 3d 11,HLSL)
我第一次使用直接 3d,我正在寻找一种表示边界框(矩形/圆柱体/球体)的方法。我如何勾勒边界框?这是着色器,还是我使用其他东西来创建轮廓形状?
追逐者
c++ - D3D10 常量缓冲区不起作用
我正在使用常量缓冲区将数据传输到我的像素着色器
问题是缓冲区在运行时对于 float4 成员的 x、y、z 和 w 包含着色器中的 0,而不管将哪些数据更新到缓冲区
结构定义如下:
任何帮助深表感谢
c++ - 将 3d 模型导入 Direct3D 11 示例
我正在使用 Direct3D 11 构建一个 WP8 应用程序,并且需要加载 3dModel。
我知道如何在 XNA 中加载它,但 XNA 对 WP8 无效:|
我需要一个如何在 Direct3D 11 中加载 3d 模型的示例。
c++ - 为什么允许我从 const 成员函数调用 this->deviceContext->map() ?
我不明白为什么这是允许的:
我将 UpdateTextureFromArray 函数设为 const,但我仍然可以在其成员上调用非常量函数吗?
在这种情况下,将函数标记为 const 对我来说是不好的风格吗?
编辑:澄清一下,如果我有这样的函数,它是对社会“撒谎”吗?在一个完美的世界里,这段代码不会编译,对吧?
windows-8 - 在 Metro 应用程序中实现 3D 对象的半透明
我正在为 Windows Store(Metro 应用程序)开发一个 3D 项目,并使用 Visual Studio 2012 Express for Windows 8 和 Blender 来创建 3D 对象。我正在导入一个 3D 对象的 fbx 网格文件(使用 Visual Studio Starter Kit),并且我希望该对象的某些部分是半透明的(50% 的不透明度)。我在 3D 对象上使用 Lambert 着色器尝试了 3 个 png 纹理,以下是我得到的结果:
1) 不透明度:100% 对象外观:不透明
2) 不透明度:0% 对象外观:透明
3)不透明度:50% 物体外观:不透明(同100%)
我想实现半透明,但即使使用 50% 的纹理不透明度,我也无法获得我想要的。请建议我一些解决方案。
任何帮助将不胜感激。