问题标签 [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 投票
1 回答
979 浏览

c# - 在 C# 中直接访问 DirectDraw 表面内存

我有一个视频采集卡,它通过定期用图像数据填充用户指定的缓冲区(给定的内存地址)来工作。这在 C++ 中对我有用,因为我可以给它一个 Surface.lpSurface 指针地址,并且采集卡驱动程序会自动在每一帧用新的图像数据填充它,在这些数据上我可以翻转()并获取新图像,从而导致一个漂亮干净的视频源。

问题是我正在移植到 C# 并且我需要能够做同样的事情,但是 DirectDraw.Surface 的托管版本没有用于获取表面内存区域的内存地址的方法/属性。我只需要这个地址,有没有办法使用 C# 获取它?

0 投票
1 回答
652 浏览

windows - DirectDraw 的截屏速度是否比 GDI 方式快?

只是为了节省一些时间,可能有人尝试过这个或在某处看到相关信息。

询问 DirectDraw 而不是 DirectX,因为我需要支持 Win2000 及更高版本,并且我无法在目标 PC 上安装 DirectX

0 投票
2 回答
1257 浏览

graphics - DirectDraw 中的 CreateSurface 在 x64 上返回 E_INVALIDARG

在以下代码中,hRet 在为 x64 构建时设置为 E_INVALIDARG。

相同的代码在 32 位中始终可以正常工作。输入中唯一明显的区别是 ddsd 的大小,由于指针大小,它在 64 位模式下大 4 个字节。

(操作系统是win7)。感谢您的任何建议。

0 投票
2 回答
6784 浏览

c++ - 错误 LNK2001:未解析的外部符号 _IID_IDirectDraw2

我使用了一段使用直接绘制的遗留代码,我处于相当尴尬的境地。不久前,我更新了系统,不得不适应新情况(加载 ddraw.dll),一切正常。今天我探索了另一个遗留解决方案,它也使用了我已经更改的类(文件),但我遇到了上面提到的链接错误。我检查并比较了项目属性,它们接缝很好。

这是directX初始化的代码,“麻烦”的代码是粗体的。

有任何想法吗?为什么它适用于一种解决方案而不适用于这个解决方案?哦链接器我讨厌你。

0 投票
1 回答
656 浏览

c# - “透明”Windows 窗体在 DirectDraw 视频表面前闪烁

我有一个应用程序,在我的控制之外,几个 Windows 窗体都有一个 TransparencyKey 属性集。当这些窗口覆盖(在前面)另一个具有 DirectDraw 视频表面的窗体时,前景窗体会闪烁(部分显示窗体,部分显示下面的视频)。问题是,TransparencyKey 的颜色不会出现在应用程序的任何地方,所以 NOTHING 应该是透明的……换句话说,结果应该是前景窗体完全不透明。

闪烁的场景

当与某种形式或其他设置为透明的 Windows 窗体结合使用时,是否有人遇到过 DirectDraw 表面闪烁的经验?我已经为此工作了数周,但没有成功。谢谢!

0 投票
1 回答
874 浏览

c++ - DirectDraw Blt 函数参数

只是一个简单的 blt 函数:

我的问题是:

假设我有一个宽度为“w”的缓冲区,我指定 dstL = 0。dstR 应该是什么?w 还是 w-1 ?

意思是包含或不包含dstR?(< 或 <=) ?

0 投票
1 回答
643 浏览

windows-7 - Allegro 4.2.4 在 Windows7 上的调色板模式损坏

我在 Windows 7 中运行调色板模式(256 色)的 Allegro 4.2.4 有问题。我在 Internet 上找到了杀死资源管理器的解决方案,它确实有效,但是期望最终用户在尝试玩游戏时会杀死资源管理器是荒谬的.

然后我找到了用破解版本替换 DDraw.dll 的解决方案,但它也不起作用 - DDHack 只会导致应用程序启动后根本不显示任何屏幕。

然后我找到了添加注册表黑客的解决方案:

但遗憾的是它也不起作用,调色板一直闪烁着所有彩虹色。

除了将整个应用程序移植到不同的编程库之外,我还有其他解决方案吗?是否可以在不触摸调色板的情况下修复 Vista/W7 上的 DDraw 问题?如果没有,什么库会给我调色板编程(我正在做需要调色板的游戏)在 Vista/W7 上没有这样的问题?

我知道另一种解决方案 - 我可以将 Allegro 4.2.4 应用程序编译为 DOS 应用程序并在 DosBox 中运行。可悲的是,但我现在能想到的就这些了……

提前感谢其他解决方案!

0 投票
1 回答
1084 浏览

c++ - 在 directdraw 全屏应用程序之上显示另一个应用程序

我正在使用一个使用 DirectDraw 功能进行显示的全屏应用程序,它工作正常。现在我想用自己的窗口显示另一个应用程序,但另一个应用程序在启动时隐藏在全屏 Direct Draw 应用程序后面。只有当我关闭 directdraw 全屏应用程序时,我才能访问其他应用程序。

是否可以在运行时从直接绘制全屏应用程序切换到另一个应用程序?有什么方法可以在全屏 DirectDraw 功能之上显示另一个应用程序的窗口,然后在另一个窗口关闭后恢复?

谢谢并恭祝安康

0 投票
3 回答
10991 浏览

direct2d - 如何使用 Direct2D 处理像素

有人可以提供一个使用 Direct2D 处理像素的有效方法的示例吗?

例如,如何将渲染目标上的所有绿色像素 ( RGB = 0x00FF00) 与红色像素 ( ) 交换?RGB = 0xFF0000标准方法是什么?可以ID2D1HwndRenderTarget用于那个吗?在这里,我假设使用某种硬件加速。我应该为直接像素操作创建不同的对象吗?

使用 DirectDraw 我会在with 逻辑操作上使用BltFast方法。IDirectDrawSurface7Direct2D有类似的东西吗?

另一项任务是动态生成复杂图像,其中每个点的位置和颜色都是数学函数的结果。举个例子,让我们简化一切并绘制Y = X ^ 2。如何用 Direct2D 做到这一点?最终我将需要绘制复杂的函数,但如果有人能给我一个简单的例子Y = X ^ 2

0 投票
1 回答
285 浏览

windows - DirectDraw 应用程序在屏幕方向更改后变黑

我有一个 directdraw 应用程序(在 c 中),一旦用户使用应用程序上的按钮旋转屏幕,它就会变成黑色。该按钮用于enumdisplaysettings执行此操作。我已经在 Nvidia 和 ATI 上测试过,问题仍然存在。

有没有办法让 directdraw 应用程序“防显示设置”?屏幕旋转后,我可以添加一些代码来恢复显示吗?