问题标签 [directdraw]

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 投票
2 回答
1814 浏览

c++ - ActiveX HWND、DirectX WindowLess 模式

我想在 ActiveX 控件中渲染视频(不在弹出的 DirectShow 窗口中)。我有:

我想设置 WindowLess 模式,但我不知道如何获得...的 HWND,究竟是什么?IEFrame,HTML元素?

有人有一些提示吗?

问候。

0 投票
2 回答
592 浏览

video - DirectDraw 比 Direct3d 更适合流式传输?

让我指定一点背景。

我目前使用一个开源程序来运行我的 TV Tuner (DScaler)。该软件的最终版本对 Direct3D 输出有一些支持,但问题是它滞后。我一直在阅读代码并阅读 DirectX 文档,试图找到一个优化代码的地方,以便 DirectX 的渲染与 DirectDraw 上一样流畅。因为该软件为关键的显示例程(锁定缓冲区、解锁、翻转等)内置了分析功能。我知道在使用 Direct3D 时遇到问题的地方是覆盖翻转部分。我得出的结论是,向 D3Device 演示太慢了,无法跟上电视调谐器的捕获速度,因此我会丢失帧并且没有以 29fps 的速度显示它们。

因为我不太了解 DirectX,所以我的问题是:Direct3d 是否不是显示视频捕获的最佳选择,或者问题仅仅是代码可能不是最好的?我问是因为我仍然有兴趣尝试找到一种使其工作的方法,以便我可以在某些流上显示我的捕获(即:Xfire)。

谢谢。

0 投票
1 回答
1867 浏览

opengl - sdl 远程桌面

对于一个简单的演示程序,我使用 SDL 库播放 mpeg 电影文件。

不幸的是,演示应用程序应该在我们的一台 Windows 7 服务器上执行,并且应该远程查看。

问题是,当我通过 RDP 连接到服务器时,SDL 窗口保持黑色 - 尽管电影开始播放(我听到声音)。

我想这与通过远程桌面访问时 OpenGL 或 DirectDraw 的渲染设备有关。有谁知道我应该使用哪些设置来设置 SDL 窗口,以便它也可以通过 RDP 工作?

当我使用 windows 媒体播放器播放电影时,电影会正确显示 - 什么样的设备使用媒体播放器?

0 投票
3 回答
1008 浏览

documentation - DirectDraw 文档在哪里?

我正在维护一个遗留应用程序,我需要找到 IDirectDraw::SetCooperativeLevel 函数的文档。(不,Windows CE MSDN 页面没有删减它。)它不在 MSDN 中,不在最新的 DirectX SDK 文档中,并且通过查看微软从他们的网站上删除了所有 DirectDraw 文档(和旧的 SDK)。

在我从随机网站下载旧的 DirectX SDK 安装程序之前,有人知道找到 DirectDraw 文档的更好地方吗?

0 投票
4 回答
1063 浏览

winapi - 用数组中的 RGB 数据重复填充窗口的最快方法是什么?

我目前正在编写一个简单的游戏。我的图形代码每帧运行一次(大约每秒 30 次),并将 RGB 数据写入具有 640 * 480 = 307200 个条目的数组。

我创建了一个 Win32 窗口,其客户区的大小正好为 640 x 480 像素。在原本为空的窗口中显示我的 RGB 数据的最快方法是什么?

窗口需要每帧更新,所以我需要避免闪烁。我应该为此使用 GDI 吗?或者是否有更快的方法使用不同的库——比如 DirectDraw?

编辑:

感谢所有的答复。首先,让我排除 Direct2D 作为选项 - 我需要支持 Windows XP。其次,我有 3D 背景,所以 Yann Ramin 和 Ben Voigtto 建议的方法 - 使用 Direct3D/OpenGL 和单个纹理四边形 - 是我过去一直这样做的方法。

但是,我很想知道 2D API 是否会是更好的解决方案。由于没有明确的答案,我整理了一个测试程序。该代码只是尽可能快地在屏幕上重复显示一个帧缓冲区。

我已经发布了我的结果作为这个后续问题的一部分。

0 投票
3 回答
2206 浏览

winapi - 为什么不使用 GDI 用数组中的 RGB 数据重复填充窗口?

这是对这个问题的跟进。我目前正在编写一个简单的游戏,并且正在寻找在 Win32 窗口中(重复)显示 RGB 数据数组的最快方法,而不会出现闪烁或其他伪影。

在上一个问题的答案中推荐了几种不同的方法,但对于哪种方法最快没有达成共识。所以,我拼凑了一个测试程序。该代码只是尽可能快地在屏幕上重复显示一个帧缓冲区。

这些是我获得的结果,对于在 32 位视频模式下运行的 32 位数据 - 它们可能会让一些人感到惊讶:

鉴于这些数字:

  • 为什么很多人坚持认为 GDI 对于这个操作来说太慢了?
  • 有什么理由比 SetDIBitsToDevice 更喜欢 DirectDraw 或 Direct3D?

以下是每个 Direct* 代码路径调用的简要摘要。如果有人知道使用 DirectDraw/Direct3D 的更有效方法,请发表评论。

0 投票
1 回答
523 浏览

c# - 尝试在 WinCE5.0 中使用 PInvoke DirectDraw 时出现“参数不正确”

关于让 DirectDraw 在 CE5.0 系统上运行的问题,我已经有一段时间了。我终于找到了一些涉及让它在 Windows Moblie 上运行的代码,并且通过一些混乱,我已经正确编译了代码。

它成功地通过创建具有 Windows 窗体句柄的实例来运行,但是当它通过以下方式检查系统的功能时:

我收到“参数不正确”的异常。如果我对此函数发表评论,我也会在以后的函数中遇到此异常,这使我相信我的 PInvoke 某处存在问题,但我不知道在哪里搜索,因为有关 CE5.0 DirectDraw 的信息似乎非常有限。我目前正在导入我的函数

然而,错误似乎只来自接口,这些接口带有类似的东西

到目前为止,我一直关注的获得最佳结果的文章(以及我一直使用的代码作为尝试基线的文章)在这里。我的代码曾经是不同的,但我一直在不断地改变,看看我的代码中是否有问题,所以在这一点上它实际上是一样的。

任何关于导致问题的帮助,我应该在哪里通过 CE5.0 查找有关 DirectDraw 的信息,或者关于我做的任何其他严重错误的指针,将不胜感激。

额外信息:我正在使用的设备是一个自定义框架,其中 D3D 不是一个选项,尽管我确实从电路板制造商那里得到了支持 DirectDraw 并且 2d 硬件加速可用的信息,所以这不应该是一个问题。

0 投票
1 回答
1399 浏览

c++ - 在 DirectDrawCreate 上解析“LNK2019 未解析的外部符号”

上周我一直试图让 DirectDraw 在 CE5.0 框架上运行,但遇到了一些非常奇怪的问题。

当我的代码中有这个函数时,我得到"error LNK2019: unresolved external symbol _DirectDrawCreate referenced in function "bool __cdecl DirectDrawInit(struct HWND__ *)" (?DirectDrawInit@@YA_NPAUHWND__@@@Z)"

该函数本身存在于 .h 中,因为我可以直接跳转到它,这让我觉得我缺少一个库,但我不知道如何检查或修复它,因为它是为远程 CE5.0 构建的设备。我还遇到了一些其他微妙的提示,我错过了一些东西,例如 LR_CREATEDIBSECTION 和其他不存在的 LR 常量以及类型上的微小差异(不喜欢 HBITMAP 而首选 LPCWSTR)。

任何帮助将不胜感激。请注意,WindowsMo​​bile5.0 代码在设备上不起作用,如果我注释掉有问题的函数,代码将编译并运行(它没有被使用,因为 DirectDrawCreate 很重要,但 LNK 错误消失了)

0 投票
2 回答
6007 浏览

c++ - 替换旧版 DirectDraw 代码

昨天我找到了多年前用 C++、Win32 API 和 DirectDraw 7 开发的俄罗斯方块游戏的源代码。我尝试构建解决方案但没有成功,因为最新的DirectX SDK(2010 年 6 月)不包含任何 DDraw.h 和 DDraw.lib更多的。

是否有任何推荐的方法(希望有示例)将代码从 DirectDraw 升级到更新的 API?或者我应该简单地安装旧的 DirectX SDK?

0 投票
1 回答
166 浏览

windows - 针对 2D 游戏的大多数 Windows 版本?

如果要为大多数版本的 Windows 编写游戏,应该使用哪个 API?

我知道 DirectDraw 在 NT4 及更高版本上工作(尽管 DirectDraw 是在 NT4 上用 GDI 模拟的)。但是,有人告诉我 DirectDraw 在较新版本的 Windows 中已被弃用?

我可以只恢复到 GDI,但是很难完全消除闪烁和撕裂,因为没有在缓冲区之间翻转的双缓冲。

我应该选择 Direct3D 还是 DirectDraw?或者有什么方法可以完全消除 GDI 中的闪烁?

如果 Direct3D 是答案,那么大多数平台都支持哪个版本?