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

windows - 我需要编写一个跨平台的 .DDS 文件,有人可以举个例子吗?

我需要使用在 OSX 和 Windows 上运行的代码创建一个 .DDS 文件。尽管格式看起来并不难,但我仍然想要一个编写文件的示例。注意我不需要阅读它,只需编写它。

C 或 C++ 和 RGBA 位图。

0 投票
1 回答
3044 浏览

c - 从 YUV444 到 RGB888 的转换

我是这个领域的新手,我迫切需要你们的一些指导。

我必须支持yuv444显示rgb 888驱动模块。

我在 wince 6.0 r3 中 为yv12→完成了一项测试,如下所述。rgb565

以下是此功能的流程。它告诉了这个测试的开始和结束。

请帮助我对 yuv444->rgb888 的上述功能进行更改。

0 投票
1 回答
238 浏览

message-queue - 我可以阻止 IVideoWindow::put_Visible 发布消息吗?

每当调用 IVideoWindow::put_Visible() 时,它都会从消息队列中查看一条消息并分派它。这完全打乱了通话顺序。

我已经修复了几个由此引起的崩溃,在个案中存在偏差。也就是说,在调用 put_Visible() 之前设置一个标志,然后清除该标志。在事件处理程序中,首先检查标志,如果已设置,则将事件放回消息队列并退出事件处理程序(即推迟处理直到 put_Visible() 返回。问题是我的代码库太大而且这种方法不成立。

有没有办法简单地改变 put_Visible() 的行为,使其不会弄乱消息队列和调度?

0 投票
1 回答
1650 浏览

c++ - OpenGL中使用DDS压缩图像的立方体映射?

我在使用 DDS 立方体贴图时遇到立方体映射问题,我只是得到一个黑色立方体,这让我相信我遗漏了一些简单的东西,这是到目前为止的代码:

调用此代码后,我使用 glBindTexture 绑定纹理并使用 GL_QUADS 和 glTexCoord3f 绘制立方体。

0 投票
1 回答
117 浏览

directdraw - 如何通过 Direct Draw 库检测覆盖硬件的最大尺寸?

如何通过 Direct Draw 库检测覆盖硬件的最大尺寸?

0 投票
0 回答
560 浏览

c++ - 如何在不丢失颜色键信息的情况下缩放精灵图像?

我目前正在开发一个显示地图并在其上绘制一些标记的简单应用程序。我正在为 Windows Mobile 进行开发,所以我决定使用 DirectDraw 和 Imaging 接口来使应用程序快速而美观。当用户在触摸屏上移动手指时地图会移动,因此整个地图的移动/滚动动画必须快速,但事实并非如此。

在每次地图更新时,我都必须绘制地图的一部分、控制按钮和标记——按钮和标记作为 mipmap 预加载在 DirectDraw 表面上。所以我唯一要做的就是从 mipmap 到后台缓冲区,以及从后台缓冲区到主表面的 BitBlit(由于我的应用程序的窗口模式,我不能使用页面翻转)。

以前我使用具有 32 位 ARGB 像素格式的预乘 alpha 表面来制作图像 mipmap,一切看起来都很好,但是绘制整个“场景”非常慢 - 我可以忘记平滑的地图滚动。现在我正在使用具有原生 (RGB565) 像素格式和紫红色 (0xFF00FF) 颜色键的 mipmap。画画要好很多。

我的 mipmap 表面是在程序加载时生成的——图像从文件中加载、缩放(使用过滤)并在 mipmap 上绘制。问题是,图像缩放过程混合了像素颜色,并且那些位于精灵区域边界上的像素与周围的紫红色像素混合,产生不被视为颜色键的半紫红色。当我使用颜色键选项进行 blitting 时,精灵有类似紫红色的小边框,看起来非常糟糕。

如何解决这个问题呢?我可以使用 alpha blitting,但它太慢了——即使是 ARGB 1555 格式。

0 投票
1 回答
962 浏览

c++ - 在 Silverlight for Windows Embedded 中实现图形硬件加速

有没有人有关于如何在 wince 中使用 DDraw 和 OpenGL 的示例代码?

我已经在网上搜索过,但没有找到任何关于如何使用 DDraw 和 OpenGL 在 wince 中实现硬件加速的信息。

请指导我如何在 wince 6.0 r3 中使用 OpenGL API 来实现硬件加速。

在 wince 6.0 r3 中。

我制作了一个由四个按钮组成的 xaml。单击任何一个按钮时,它都会调用特定事件。我已经在我的子项目中编写了用于使用该 xaml 文件的 c++ 代码。

现在我必须为使用 OpenGL API 嵌入的 windows 在 silverlight 中实现图形的硬件加速

我知道,如果我熟悉 OpenGL API,那么我也可以熟悉 DDraw API

请指导我,因为我对这些 API 非常不熟悉。

提前致谢

0 投票
3 回答
3389 浏览

winapi - Win32:如何判断 DirectDraw 是否开启?

CachedBitmapsGDIPlus中使用时,如果 Windows 视频“硬件加速”降低太多会导致图形损坏 - 例如禁用DirectDraw :

在此处输入图像描述

硬件加速有六个级别:

  • 禁用所有加速
  • 禁用除基本加速之外的所有加速。(服务器机器上的默认值)
  • 禁用所有 DirectDraw 和 Direct3D 加速,以及所有光标和高级加速
  • 禁用所有光标和高级绘图加速
  • 禁用光标和位图加速
  • 启用所有加速(台式机上的默认设置)

如果 DirectDraw 被禁用,那么DrawCachedBitmap在 GDI+ 中使用将导致图形损坏。如果 DirectDraw 未启用,我很容易使用较慢的DrawImage()API - 但我必须能够检测到 DirectDraw 已禁用。

如何以编程方式检查DirectDraw是否已启用?


问题是:dxdiag 如何做到这一点:

替代文字

也可以看看

KB191660 - DirectDraw 或 Direct3D 选项不可用 存档

0 投票
1 回答
344 浏览

c++ - DirectDraw:如果表面大于后缓冲区,则裁剪失败

我正在为移动设备编写游戏引擎,并且正在尝试支持多种分辨率。游戏世界可能比屏幕大得多,所以我使用剪辑器在世界上创建视口。

我的设备的分辨率为 240x320。当我将视口设置为 240x320 并将我的世界设置为 240x320 时,一切都很好。我可以毫无问题地将世界滑出屏幕。但是,当我的视口为 220x320 且我的世界为 240x320时,DDERR_INVALIDPARAMS当表面移动到左侧屏幕之外时,blitting 会失败:

将表面移到右侧屏幕外可以正常工作,表面被正确裁剪。

当表面大于后备缓冲区时,如何在我的后备缓冲区上剪辑表面?

提前致谢

0 投票
2 回答
3029 浏览

delphi - 德尔福+网络摄像头

我正在寻找一种在 delphi 中使用我的网络摄像头的方法,主要用于抓取图片,由于某种原因我不能使用 TWAIN 驱动程序。