问题标签 [d3dimage]
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.
wpf - D3DImage 和 SharpDX 在慢速硬件上闪烁
我正在使用 SharpDX.WPF 项目来实现 WPF 功能,与 SharpDX 附带的工具包相比,它似乎是一个易于理解的低开销库(它有同样的问题!)
首先:我使用以下方法修复了最新 SharpDX 的 SharpDX.WPF 项目:https ://stackoverflow.com/a/19791534/442833
然后我对 DXElement.cs 进行了以下 hacky 调整,这里也完成了一个解决方案:
然后我以立方体模式渲染 8000 个立方体......
屈服...
经常打印到控制台,但闪烁仍然存在。我假设 WPF 足以在渲染完成之前使用不同的线程显示图像,但不确定......当我使用 SharpDX 支持 WPF 的 Toolkit 变体时也会发生同样的问题。
展示问题的图片:
注意:它在这些旧图像之间随机切换,随机。我还在使用非常旧的硬件,这使得闪烁更加明显(GeForce Quadro FX 1700)
A 做了一个回购,其中包含与我用来解决此问题的完全相同的源代码: https ://github.com/ManIkWeet/FlickeringIssue/
c++ - DirectX 9 引擎 Z 缓冲区不适用于 D3DImage
我正在尝试通过 D3DImage 将我的 Direct9 引擎集成到我的新 WPF 应用程序中。除了 Z 缓冲区外,一切正常。使用 FALSE 的 AutoDepthStencil,我可以渲染我的网格,但深度不起作用。当我激活 AutoDepthStencil 时,没有绘制任何内容。我已经四处寻找了几天,没有发现任何可以帮助 meq
她的演示参数
渲染状态:
重置:
Surface 和设备创建:
矩阵:
c# - 需要 SharpDXElement 替代品。解决sharpDX WPF闪烁的方法
我有一个非常接近完成的 SharpDX 项目。它使用 Kinect 进行交互。因此,我的项目将 WPF 用于 Kinect 区域和 KinectUserViewer 对象。到目前为止,SharpDX 在所有方面都表现出色,但是,当它到达程序中大量使用 direct3D 的某个部分时,它开始闪烁。这显然与 D3Dimage(由 MainWindow.xaml 中的 SharpDXElement 使用)可能“从根本上损坏且不适合 WPF 中的高效 D3D 渲染” [1]的事实有关。有没有办法让我的 WPF 元素不被 direct3D 闪烁?
c# - WPF 和 D3DImage 视图更新不起作用
我有一个 WPF 应用程序,其中我在后端有一个本机 directx r 渲染引擎,在前端有一个 WPF 视图。directx 渲染引擎返回一个 WPF 表面,我在每次渲染调用时都会更新它。
我已经通过 D3DImage 将两者链接起来,如下所示在我的用户控制下:
在每次渲染调用开始时,我会从本机回调到托管端,在其中我锁定图像,并且在渲染调用结束时的类似回调中,我会收到渲染完成回调,其中我使图像并解锁。
在任何视图操作操作中,我都会通知底层渲染引擎,它会开始渲染序列。这一切都完美地发生了。问题是我的背景图像没有立即刷新。如果我将焦点更改为其他应用程序窗口并返回到我的应用程序窗口,它会刷新。
这是奇怪的部分,如果我向用户控件添加进度条,视图会完美更新吗?对幕后可能发生的事情有任何想法吗?
PS 我是 WPF 新手,因此我可能无法正确解决问题。对于那个很抱歉 :-(
wpf - 可以忽略 WPF 的 D3DImage.IsFrontBufferAvailable 吗?
我总是遵循 WPF 的D3DImage.IsFrontBufferAvailable的常见建议,并在前端缓冲区不可用时停止渲染。但是在重置 D3D 设备后,这个属性有时会一直粘在上面false
,再也不会出现true
了。
除非我进入调试器并忽略该属性并继续渲染,否则它实际上会返回true
并且一切都重新开始工作。
即使完全删除D3DImage.IsFrontBufferAvailable
检查并始终完全忽略该属性似乎也很有效。
似乎有些人出于其他原因也建议这样做:
请注意,即使
IsFrontBufferAvailable
标志表明它不可用,您仍然可以正确渲染。诀窍是简单地忽略标志。
完全忽略它的缺点是什么?(或者是否有其他一些技巧使它不会停止工作?)
directx - 如何使用 d3d11Device 创建两个 2dTexture?
我在 d3d11 中创建两个 2dtexture,如下所示: m_device->CreateTexture2D(&D3D11Tex, NULL, &tex1); m_device->CreateTexture2D(&D3D11Tex, NULL, &tex2);
D3D11Tex.ArraySize = 1;//目前使用我读到这个值可以保持为二。
但是我们如何获得 2 个纹理。将 ArraSize 保持为 2 会给我 tex1 和 tex2 中的两个纹理吗?或者 tex1 是大小为 2 的数组。
对此的任何帮助表示赞赏。提前致谢。
wpf - 渲染的纹理在 DirectX 11 中是透明的
我正在渲染来自 IP 摄像机的 H264 视频帧,这些视频帧通过 DirectX 11 和 WPF 中的 SharpDx 通过 D3DImage 控件解码为 BGRA32 像素格式。
经过大量研究并查看了各种示例和示例后,我终于设法让它使用 DirectX 11 渲染 H264 帧
我当前的设置包括设置顶点着色器和像素着色器,如下所示:
当我收到一个新帧时,我会通过如下映射资源来更新 RenderTexture:
我的效果/HLSL 文件:
图像被正确渲染,但如果父颜色的背景颜色不是黑色,它们似乎是不透明的。
现在我似乎无法弄清楚这里到底发生了什么将我的纹理渲染为透明的。
在这件事上的任何帮助将不胜感激。
wpf - 尝试学习 D3DImage - 找不到 DirectX 引用
我有一个 WPF 应用程序,我想学习编写 DirectX/Direct3D 代码并将其显示在我的应用程序的 WPF D3DImage中。我从http://www.codeproject.com/Articles/28526/Introduction-to-D-DImage下载了一些示例代码,但是当我尝试构建它时,我得到了
找不到引用的组件“Microsoft.DirectX”。
找不到引用的组件“Microsoft.DirectX.Direct3D”。
我假设我必须对某些东西做一个添加引用,但是什么?我想我必须安装一个 DirectX SDK,但哪个?(有人说WPF最多只能达到9?)一旦我这样做了,我该如何使用它来解决原来的问题?
wpf - 使用 3D3 设备和 RDP 窗口最小化的远程桌面行为
在我们的 C# WPF 中,我们使用显示地图的第 3 方(非托管)库。
我们使用System.Windows.Interop.D3DImage类。
第 3 方库将 Direct3D 用于 IntPtr32 表面位置属性。
当我从另一台计算机打开远程桌面并尝试查看 WPF 客户端时,我们会看到地图。
一旦 WPF UI 客户端启动,我最小化 RDP 会话或关闭 RDP,我将得到异常:
根据我对视频流应用程序的经验,当窗口最小化时,它会停止渲染图像以节省带宽。
我猜 rdp 的行为是一样的吗?是否可配置?即使窗口最小化,我也希望继续流式传输。
我知道这里提到的 .RDP 文件中有其他设置。
directx 设置为:redirectdirectx:i:1
到目前为止的部分答案:
当RDP客户端应用程序连接到RDP服务时,显示窗口时是GUI模式,当它最小化时是GUI-LESS模式,并且Direct 3D Components真的丢失了。为了在最小化期间使它们保持活动状态,必须打开注册表项(RemoteDesktop_SuppressWhenMinimized)
c# - 将 D3DImage 转换为字节数组
有什么办法吗?
我可以将对象转换为 ImageSource 并分配给 Image,但我必须能够将其存储在 byte[] 中。我发现的所有方法都使用强制转换为 BitMap,这在此处不起作用。