问题标签 [directx]
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.
image - 通过 DirectX 更快地显示大图像?
作为工业视觉应用程序的开发人员,我经常有相当笨重的图像,比如 6000x4000Pixels 或更大。
虽然相机和图像处理正在处理稳定的新图像流(并且此处理是主要任务),但我希望允许用户舒适地并行查看其他图像。
在处理器(GDI 等)上执行此操作会窃取太多性能。例如,我们需要 0.2 秒来分析图像,但通过单次缩放(调整大小以适应某些控件)显示它需要 0.8 秒,更不用说让用户继续前进并深入了解它了。
由于 Photoshop 允许借助显卡的非常快的内存和处理来显示和缩放,我想知道是否有人可以给我一个想法,是否以及如何在我自己的代码中对此进行实验:将数据推送到显卡(可能需要多长时间这需要我的 76MB 的 rgb 数据吗?)并让它显示在一些控件中,而不用费力地放大并由用户移动到控件/卡以进行用户交互。
无需 3D 外观,只需在 2D-rgb 图像中移动和调整大小。目标是在低处理器负载的情况下实现快速舒适的观看。
==>这可能吗(作为纹理或类似的东西)?==> 当前的 >=256MB 的低端 3D 卡有限制吗?==> 有人可以建议一些预期的持续时间(复制数据,缩放)吗?
windows - 关于 DirectInput 库中 guidInstance 的问题;还处理设备的枚举
关于 DIDEVICEINSTANCE 中的 guidInstance
微软说:
设备实例的唯一标识符。应用程序可以将实例全局唯一标识符 (GUID) 保存到配置文件中,并在以后使用它。实例 GUID 特定于特定计算机。从一台计算机获取的实例 GUID 与另一台计算机上的实例 GUID 无关。
那么,如果我将设备连接到计算机并且我的程序进行枚举并找到 guid,我是否需要再次枚举?即使用户插拔设备。如果插入了另一个相同类型的设备,它是否仍然识别出第二个设备与第一个设备不同,因此需要不同的 guid?我应该在我的程序一直运行以查找我的设备时重新枚举所有接口,还是对于给定的 pc 一次就足够了?
谢谢。
c# - directx基础能力测试
我有一个托管的 directx 9.0c 应用程序无法在一些低规格机器(没有显卡的机器)上运行。
我想知道是否有人对要测试的最小 Directx 上限有任何建议,以便我可以在尝试运行应用程序之前发现潜在的故障。
directx 应用程序只显示几个网格和几个纹理,并没有太密集。
我目前检查 SupportsHardwareTransformAndLight,如果有则启用 HardwareVertexprocessing,如果没有则启用 SoftwareVertexProcessing。只是想知道我还应该寻找什么?
谢谢
multithreading - 是否使用 Windows 句柄从 bgnd 线程安全地进行 DirectX 调用?
我正在调试一个(主要是)非托管代码之上的 Winforms UI 应用程序。有一点 UI 代码不是 WinForms:它使用 DirectX 直接绘制到某些 Panel 组件的表面上。为此,组件的窗口句柄在创建后被记录,任何后续调用需要执行此 DirectX 显示的模块所需的句柄(例如 GetWindowRect()),都使用此句柄。这种机制已经存在了一段时间,没有看到我要描述的问题,尽管也许我们只是幸运。我不再可以使用执行此操作的程序员。
我要解决的问题是,该区域的显示会间歇性地损坏。从后台线程调用此例程。我在我的应用程序日志中看到,例如,对 GetWindowRect() 的调用会突然并伴随绘图问题返回垃圾坐标。Window 句柄本身没有损坏,我有理由确定我们没有覆盖 Windows 数据结构;我可以停止并重新启动我们的显示流,GetWindowsRect() 将使用相同的 Windows 句柄再次开始返回良好的坐标。
如果这是在 .NET 级别,我会使用 Invoke 将绘图推迟到主线程。我的问题是,我们应该对这个 DirectX 调用做同样的事情吗?我试图找到微软关于不要在后台线程中绘制的警告,以提醒自己它是否扩展到使用 Windows 句柄;谁能指出我这一点?
个人电脑
c# - 使用 C# 截取任何外部应用程序的屏幕截图
我们有一个 C# (WPF) 应用程序,我们想在其中截取我们启动的任意应用程序的屏幕截图(即,我们有一个对我们启动的进程的引用)。应用程序可能被最小化或在其他窗口后面,但我们仍然只想要单个应用程序的图像,而不是重叠像素。
我知道使用 BitBlt 或PrintWindow的典型 P/Invoke 解决方案大部分时间都可以工作,但在处理直接绘制到图形设备的 DirectX 或 OpenGL 应用程序时,这些解决方案会失败(我只得到黑色/透明像素)。我发现这篇文章是关于从 C# 中截取 Direct3D 应用程序的屏幕截图,所以我想我已经涵盖了这个案例。
所以我的问题是:
- 我将如何为 OpenGL 应用程序执行此操作?
- 确定要使用的适当方法(PW/DX/GL)的最简单方法是什么?
- 有没有一种通用的方法可以做到这一点?
对于#2,我是否只能检查可执行文件加载的模块并查看是否加载了 DirectX 或 OpenGL DLL/Assembly?
这只需要在 Windows XP 上运行(不是跨平台的,如果有此应用程序,也不会很快进入 Vista/7)。
windows - 有多少百分比的 Windows 框支持 OpenGL
我一直在考虑开始一个新的图形项目,我想使用 Java。Java 包含所有相关 GL 功能的包装器,但我想知道有多少人,包括临时用户,实际上安装了不错的 GL 驱动程序。体面,我的意思是有点稳定和相当新(GL 1.5 支持可能会,尽管 2.0 附带的 GLSL 支持会很棒)。我可以使用 DirectX,即使使用 Java,但我非常讨厌它,而且这个项目应该很“有趣”。另外,我喜欢 GL 至少接近跨平台的特性。那么,任何人都知道关于有多少百分比的 Windows 用户拥有运行 GL 应用程序的驱动程序的任何非虚构统计数据?
directx - 如何调整整个屏幕的大小?
我希望能够重新调整显示的所有内容的大小——任务栏、窗口、桌面——所有内容并将其放在边框中。实现这一目标的最佳方法是什么?我在想 DirectX,但我对它不是很熟悉。我不确定什么技术可以做到这一点,但我敢打赌它必须是相当低的水平。
java - 具有硬件加速 3D 图形的 Java 小程序?OpenGL 和/或 DirectX
我用谷歌搜索找不到这个问题的明确答案。
如果我想要一个 Web 小程序,Java 中是否有一个库可以利用客户端机器上的硬件加速图形驱动程序,例如 OpenGL 和 Directx?我正在想象在小程序启动之前编写一些驱动程序检测代码来检测 3D 图形功能。
我意识到有很多 Java 3D 库,但无法弄清楚这一点。
我的印象是你可以做到这一点,但找不到它。
当我问的时候,Flash 和 Silverlight 怎么样?我以为他们所有的 3D 图形都是软件渲染的?
编辑:
我看到问题的答案是肯定的,Java 确实有 3D 硬件支持。感谢您提供所有信息!
我想我真正的问题是(我在做什么):
1)这在多大程度上支持充分使用?例如,您可以使用 DirectX 或 OpenGL 着色器吗?我可能希望缺少一些功能,因为这往往会抽象出一些东西。我可以制作一个 GPUID 程序或一个实用程序来详细列出客户端的 GPU 功能吗?
2)实用吗?我可以将像 Quake 这样的旧 3D 游戏移植到 Java 小程序并获得不错的性能吗?(当然取决于客户端系统)
silverlight - 在 Windows 上进行 DirectX 编程,首选的方式是什么?
我需要以一种引人注目的方式开发业务应用程序的一部分。因此想看看我是否可以使用DirectX。这就是我得到的。
首先,我读到使用 C/C++ 就像在踢自己的脚,我应该改用 DirectX.NET。我不能不同意。这是21世纪。
下载了 DirectX SDK,但在其中找不到 .NET 程序集。现在在网上搜索发现 DirectX .NET(称为 MDX)现已过时(于 2006 年发布)。我应该改用主要为 XBOX 开发的 XNA。
已下载 XNA。但它不会安装,因为我没有 C#.NET Express 2005 SP1。在我的 VS Pro 2005 上安装了 SP1。但它仍然无法安装。它需要 Express 2005 和那个单一的版本,而不是 Pro,显然不是 2008。
沮丧尝试下载免费的 C#.NET Express。但是来自 MS 的链接说 C#.2005 实际上下载了 C#.2008,因为 C#.2005 现在已经过时了。
现在我读到 MS 现在正在将它的力量放在 WPF/silverlight 后面。XNA 不支持 DX10,Vista 也不支持 DX9。
现在我有两个选择:
回到 15 年前,用普通的 C/C++ 编写代码。至少 C 已经证明自己是永恒的。
试试银光。
你有什么建议?还是我错过了什么?
更新:想补充一点,DX10 不向后兼容任何其他 DX 版本。SlimeDX 看起来很有前途。但作为一个非常新的包,我不确定文档和教程会有多大帮助。
Udpate 2:我使用的谷歌搜索XNA下载时出现的第一个下载链接似乎不是最新的。感谢 DouglasH 提供 v.3 的链接。正在下载它。可能它会起作用。
但随后阿吉安。我应该切换到 WPF/Silverlight 吗?还是选择 XNA?哪一个有更好的记录和未来的专业?
更多更新:Vista 确实没有预装 DirectX 9 [通过谷歌搜索检查]。至少去年我的机器上没有。谷歌搜索显示,从 MS 下载 DirectX 9 后,我必须在 Vista 上手动安装 DirectX 9。但是我的 attemet 失败了,因为 DX9/vista 的硬件驱动程序丢失或无法正常工作。我的想法是它没有得到很好的支持。
windows-7 - 关于 Direct2D 和 DirectWrite 功能
有人知道如何在 XP 和 Vista 中启用 Direct2D 和 DirectWrite 功能吗?Direct2D 和 DirectWrite 是在 Windows 7 中引入的。