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

directx - 什么可能导致 IDirectDraw::GetCaps 返回 DDERR_INVALIDPARAMS?

我有这个带有 IDirectDraw::GetCaps 返回的小代码片段DDERR_INVALIDPARAMS(又名E_INVALIDARG,又名 0x80070057)。

加载的dll是ddraw.dll 5.03.2600.5512 (xpsp.080413-0845)

我需要检查显示硬件是否有 3D 加速(DDCAPS_3D)。

我不知道如何解决这个问题,代码片段是如此简单,我错过了什么吗?

非常感谢你。

亚历山德罗

0 投票
2 回答
1492 浏览

directx - 执行 DxDiag“Direct3D 加速”检测的 C++ 函数

Microsoft DxDiag 可以检测系统是否具有“Direct3D 加速”。

如果系统没有此功能,DxDiag 将写入“Direct3D 加速不可用”,并在控制台中写入“Direct3D 功能不可用。您应该验证驱动程序是硬件制造商的最终版本。”

我想要一个 C++ 函数也一样。

我做了一些测试,以下功能似乎可以完成这项工作。

还有其他更好的主意吗?

谢谢你。

亚历山德罗

0 投票
2 回答
365 浏览

windows-mobile - Windows Mobile DirectDraw 是否支持 BltFast?

我能否在 WindowsMo​​bile 设备上访问 IDirectDrawSurface5 以便可以访问 BltFast 方法?

0 投票
2 回答
1213 浏览

directx - DirectX 中的 Stretch blit 导致锯齿状边缘

我有一个 Direct3D 应用程序,它以固定分辨率(比如 800x600)运行窗口或全屏。为了支持宽屏模式,我以 800x600 渲染到后缓冲区,然后使用 Blt 将最后一帧绘制到前缓冲区的一部分中,该部分通常更大(比如 1280x720),因此 800x600 图像被拉伸到 960x720 以保持纵横比。

这工作正常,除了在某些视频卡/操作系统/驱动程序组合(nVidia Quadro、DX11、Windows 7)中,blit 似乎是使用点采样完成的,导致锯齿状边缘和通常不平滑的最终图像。

有没有办法避免这种情况?例如,在放大时强制 Blt 使用线性滤波器?

(注意:我知道我可以将原始的 800x600 资源渲染为 960x720 而不是在最后进行拉伸,但这还有其他缺点,因此在最后进行拉伸是首选解决方案)

0 投票
2 回答
536 浏览

directdraw - 以编程方式获取 DirectX 6.1 (DDraw4) 的设备上限

我正在围绕 DirectX 6.1 库编写 w​​indows32 挂钩到 DirectX 9.0c;想法是将所有对 DX 6.1 3D 设备的调用替换为对 Direct 9.0c 的调用并注入一些自定义代码,因此我正在修补的旧游戏(99 年)将能够使用着色器、后期效果等。

旧的 DX 6.1 3D 设备是通过创建 DDraw 模块创建的。然后游戏正在枚举设备上限。在我的模块中,整个 DDraw 模块被跳过并且 3D 视图被初始化。所以我有问题,因为我根本没有 DDraw 设备,所以我无法给游戏提供它需要的 Ddraw4 设备上限!

所以我的问题是如何在不初始化 DDraw4 设备的情况下获得 DDraw4 设备上限。也许创建固定列表并将其提供给游戏就足够了,但我不知道该列表应该是什么(我给出了我认为应该的,并且游戏退出了 - 记录器显示它只是在设备上限之后检查)

0 投票
2 回答
3708 浏览

graphics - DirectDraw 覆盖

有没有人有 DirectDraw 覆盖的工作示例(代码)?就像屏幕上移动的东西一样。我一直在尝试找到 DirectDraw 覆盖使用的示例,但无法找到。

谢谢你。

0 投票
2 回答
2650 浏览

windows-7 - 在顶部绘制带有文本的视频

我正在开发一个应用程序,但我遇到了一个我似乎无法找到解决方案的问题。该应用程序是用 vc++ 编写的。我需要做的是显示一个带有文本的 YUV 视频源。

现在它可以通过使用 GDI 在 OnPaint 方法中绘制文本和 DirectDraw 叠加层上的视频正常工作。我需要摆脱覆盖,因为它会导致很多问题。它不适用于某些视频卡、vista、7 等。

我想不出一种以更兼容的方式完成同一件事的方法。我可以使用带有后台缓冲区的 DirectDraw 绘制视频并将其复制到主缓冲区就可以了。这里的问题是在 GDI 中绘制的文本会因为视频刷新的次数而闪烁。如果可能的话,我真的很想保持代码完整地绘制文本,因为它运行良好。

有没有办法将文本直接绘制到 DirectDraw 缓冲区或内存缓冲区或其他东西,然后将其 blt 到后台缓冲区?我应该一起看另一种方法吗?两个重要的操作系统是 XP 和 7。如果有人有任何想法,请告诉我,我将对其进行测试。谢谢。

0 投票
4 回答
1775 浏览

c++ - DirectX9,DirectDraw,优化?

首先,我正在编写游戏。目前在渲染函数中有两个对两个不同函数的调用。一个渲染一些文本,一个渲染精灵。

在我的电脑(AMD Phenom(tm) II X4 955 处理器(4 个 CPU),~3.2GHz,4096MB RAM DDR2,NVIDIA GeForce GTX 285)上,当渲染大约 200 个精灵时,渲染速度约为 2200 FPS,当渲染大约 100 FPS 时渲染约 14,500。

我正在使用一个向量来存储我正在渲染的每个对象的信息,并使用一个带有许多绘制调用的精灵。

VS2008 发布模式,针对 C++ 进行了全面优化。我知道我听说左右不会过早优化,但在这一点上,它对我来说运行得很好,但在某些计算机上不是很好。

我无法想象为数组更改向量,因为我每帧都在以一种不确定的方法从向量中推拉东西。几乎是随机的。

我试过浮动和双打,速度没有什么不同。

使用 DirectDraw 而不是 DirectX 和 Sprite Render 方法会有所不同吗?因为我不知道 DirectDraw 和 DirectX 之间的区别,所以我不是 100% 我应该考虑的。

该游戏在普通计算机上运行良好,但我将我的游戏与东方进行比较。东方在我试过的最弱的电脑上以 60 FPS 运行,但我的游戏运行速度不会超过 36~42 FPS。我无法想象我做错了什么,对 DirectX 和 C++ 如此陌生。

在这件事上的任何帮助都会很棒,不幸的是,我暂时不会来添加信息或回答问题。

0 投票
2 回答
1757 浏览

c++ - Directdraw:旋转视频流

问题

Windows Mobile / Directdraw:旋转视频流

视频预览正在运行,我现在只需要一种旋转图像的方法。我认为处理这个问题的唯一方法是编写一个自定义过滤器,CTransformFilter它会为你旋转相机图像。如果你能帮助我解决这个问题,例如通过我有限的 DirectDraw 知识帮助我开发这个过滤器,那么赏金就是你的。

背景/上一个问题

我目前正在为移动设备(HTC HD2、Windows Mobile 6)开发应用程序。该程序需要做的一件事是使用内置相机拍照。以前我是使用CameraCaptureDialogWindows Mobile 6 SDK 提供的,但我们的客户想要一个更加用户友好的解决方案。

这个想法是在控件中预览相机的视频流,并在单击控件时使用相机的照片功能拍摄高分辨率照片(> = 2 兆像素)。我们对该主题进行了一些研究,发现实现这一目标的最佳方法似乎是使用 Direct Draw。

缺点是我从未真正使用过任何本机 Windows API,而且我的 C++ 相当糟糕。除此之外,我在某处读到 HTC 手机的 Direct Draw 支持特别糟糕,您将不得不使用未记录的本地 HTC 库调用来拍摄高质量的照片。

好消息是一家公司向我们提供了开发符合上述规格的控件。他们估计这需要大约 10 天的时间,这引发了我们是否可以在合理的时间内自行开发这种控制的讨论。

现在我的工作是研究哪种方案更好。不用说,研究整个架构和开发演示的时间太少了,这让我想到了以下问题:

问题不再相关!

  • 你们中有人有类似项目的经验吗?你有什么建议?
  • 是否有处理视频预览和图像捕获的良好 Direct Draw 源代码示例?
0 投票
1 回答
1108 浏览

windows-mobile - Windows Mobile / Directdraw:旋转视频流

跟进:Directdraw:旋转视频流

我设法预览了相机的视频流,但图像旋转了 90° 到横向模式。我现在正在寻找一种将相机图像旋转回正常状态的方法,但问题是我什至不知道从哪里开始:这是在 DDSURFACEDESC 结构中的 VideoCaptureFilter、VideoInfoHeader 中完成的吗?只能通过使用额外的过滤器来完成旋转吗?是滤镜设置吗?