问题标签 [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 回答
390 浏览

windows - DirectDraw 输出适配

我正在开发一个为旧游戏添加功能的项目;这个想法是添加选项以窗口化运行(最初它只支持 800x600 全屏)。

到目前为止,我修改了directDraw的初始化以删除全屏独占模式并使其能够与GDI一起使用,创建了一个剪辑器并正确设置了所有内容,游戏将全屏模式设置为8位色深,窗口运行会导致它输出像这样的图像垃圾:

游戏输出运行窗口

到目前为止,我尝试使用 GetDIBits 和 SetDIBits 做一些技巧来解决这个问题,但我没有成功。

该游戏适用于一个非常旧的 directDraw 版本(根本没有关于这个版本的文档,我的大部分工作都是基于猜测和测试)。

游戏使用 BltFast 将信息显示到屏幕上。

这是为尝试使用 DIBits 解决问题而编写的一段代码

PrimarySurface = 游戏主表面本身

有什么方法可以通过更改对 BltFast 的调用以正确输出到屏幕来直接从缓冲区转换 8 位颜色格式?

将输出重新路由到另一个 DC 然后使用 GetDIBits/SetDIBits 修复图像是否是更好的解决方案?

0 投票
0 回答
81 浏览

c++ - 在屏幕上绘制图片的最快方法

我需要在 Windows 机器的屏幕上绘制图片流(实时视频),并且绘制速度必须尽可能快(即延迟最低)。我尝试了 DirectDraw 从屏幕外表面到主表面的 blitting,它引入了大约 60 毫秒的延迟,这太高了。我的显示器刷新率为 60Hz。

有更快的方法来完成这项任务吗?谢谢

0 投票
1 回答
33 浏览

gdi - 直接写入是否与 GDI 区域等效

在经典的 Windows GDI 中有一个称为“区域”的功能。基本上,您可以通过此功能组合简单的几何形状来构造复杂的形状。一个区域有一个句柄,可以调用到 dc 中进行填充或用作剪辑区域。

DirectDraw 是否具有等效功能,如果有,请提供门口资源的链接。在这一点上,我只是在寻找进入这个主题的方法。

[没有示例代码发布,因为它不适合这个问题]

0 投票
0 回答
262 浏览

python - LibVlc 不能在 Python 的 Qt 框架中使用

所以我试图将一些 VLC 媒体播放器嵌入到他们单独的 QTFrames 中。一切都在python中完成。但是由于某种原因,官方示例不想工作(在此处找到)

我的代码如下所示:

如果我取消注释这些行,我会收到以下错误:“directdraw vout display error: Win32VoutCreateWindow RegisterClass FAILED (err=1410)”

我正在使用 Windows 64 位和 Python 3.6

0 投票
0 回答
221 浏览

c++ - DirectDraw Surface GetDC() 的更快替代方案?

问题

我正在尝试将 Direct2D 内容绘制到 DirectDraw 表面(后缓冲区),这部分很好。问题是在 DirectDraw 表面(在现代 pc 上)上使用 GetDC() 的成本,它锁定并获取设备上下文,然后在 Direct2D 绘图发生之前将其用于与 Direct2D 的 BindDC()。GetDC 和 ReleaseDC 的成本如此之高,如果每帧完成一次,我将获得 15FPS 的感觉。

是否有更快或替代的方法来获取 DirectDraw 表面上的 Get/ReleaseDC() 或以某种方式对其进行缓存以避免无法承受的性能?

我在旧 DirectDraw 上构建的旧游戏的背景故事 ,源丢失,我正在尝试使用挂钩来升级图形 API。我最终希望将所有 directdraw API 调用移至 direct2d。

0 投票
1 回答
139 浏览

c++ - 如何根据窗口的客户区相对于屏幕的位置设置 Direct Draw 裁剪器

我正在向我的 2D 图形引擎添加 Direct Draw 渲染选项。

在非全屏应用程序上设置 Direct Draw Clipper 时,如果 Window 的客户区左上角位置不在屏幕的 0,0 上,则剪裁器会使用偏移量剪辑客户区。

这是我的剪辑器设置代码:

这是屏幕截图:

在此处输入图像描述

白色区域的大小是客户区到屏幕左上角的距离。

在设置剪辑器并将其移回原始位置之前将窗口移动到屏幕的左上角并没有帮助。

提前致谢。