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

c++ - DirectX — 有 DirectDraw 表面 Flip() 的类似物吗?

我正在构建一个应用程序,该应用程序根据提供的两张图片(非 3D 模型)在 200 Hz 屏幕上绘制立体图像(立体图像)。所以重绘的速度完整性非常重要。我使用 DirectDraw 表面及其 Flip() 获得了最好的结果(将当前表面的图像切换到辅助图像):

但是 DirectDraw 非常过时,我正在寻找一种基于现代 DirectX 库重新实现此功能的方法。但我真的不想创建一个四边形,绘制图片作为它的纹理,计算 3D 投影矩阵只是为了输出 2D 图像。

对于如何使用 DirectX 完成此操作的任何片段,我将非常感激。提前致谢。

0 投票
0 回答
865 浏览

linux - 在linux命令行上将图像转换为dds

我有一堆 jpeg 格式的图像,我想将它们批量转换为 .dds(DirectDraw 表面)。

有谁知道实现这种转换的命令行工具?

0 投票
3 回答
986 浏览

c++ - DirectDraw 使用 GetProcAddress 获取过程地址

如IDirectDraw7::SetCooperativeLevel 方法的文档中所述,它指出

您必须使用 LoadLibrary 显式链接到 Ddraw.dll,然后使用 GetProcAddress 访问 SetCooperativeLevel 方法。

在备注中。但是,当我尝试这样做(下面的代码)时,它无法工作。难道我做错了什么?

0 投票
1 回答
701 浏览

c++ - 在 COM 接口的 Vtable 中查找特定函数的索引

我正在尝试SetCooperativeLevel在 DirectDraw 对象中挂钩该函数。我的目标与这个问题API Hook on a COM object function?中的目标非常相似?但是唯一的问题是我不知道IDirectDraw's vtable for中的确切偏移量SetCooperativeLevel。无论如何,有没有可能从<ddraw.h>或以编程方式收集这个?

这是 的接口声明IDirectDraw,但是我不确定它如何对应于 vtable。

0 投票
0 回答
1290 浏览

png - Compressonator 使用 alpha 通道将 dds 转换为 png

使用 alpha 通道将 dds 转换为 png 的命令是什么?

如果我使用这个命令:

那么输出 png 不使用 alpha 通道。如果我打开TheCompressonator.exe,选择Edit-->create alpha channel,然后选择file to save original to png,png文件包含alpha通道,但是我有很多dds文件需要转换。

0 投票
0 回答
580 浏览

wpf - 在 WPF 中检测和获取脏区域?

在 WPF 应用程序中获取重绘/脏区的任何方法?

我想让它们以编程方式进行,而不仅仅是可视化。

我的目标是了解在 WPF 应用程序中为一种远程处理应用程序重绘的时间和内容。

0 投票
1 回答
601 浏览

directx - DirectDrawSurface (DDS) 间距计算

过去两天我一直在研究 DDS 格式并编写 DDS 纹理加载器,只是出于好奇,我遇到了一些我认为理所当然的东西,即“音高计算公式”。我真的很好奇为什么它们被指定完全一样,没有任何理由。

例如,对于块压缩格式(DXT#n、BC#n),全部基于 S3TC,其计算方式为

最大值(1,(宽度+3)/4)*块大小

所以,max 给出了两个值中较大的一个,但为什么它会起作用呢?为什么要将纹理的宽度加 3,然后将其划分为“半字节边界”?

另一方面,一些遗留类型是:

(( 宽度+1 ) >> 1) * 4

因此,右移基本上是在二进制基础上移动小数点,或除以二。那么,为什么要加 1,然后除以 2 再乘以 4?丢失最右边的两位?

最后一个,对于其他格式:

( 宽度 * bpp + 7) / 8

我了解每个像素的位数和最接近的字节边界划分,但为什么要加 7?

有人可以多写一点吗?或者指出我正确的方向?

0 投票
1 回答
1166 浏览

directx - 带有 DirectDraw (2d) 覆盖的 Direct3D 11

基本上,我想在 3d 交换链上进行 2d 绘图。但是我的代码注入了另一个程序,我没有源代码。

我可以画图,但它仅在使用 DXGI_FORMAT_B8G8R8A8_UNORM (BGR) 格式创建交换链时才有效。

最初,该程序使用 DXGI_FORMAT_R8G8B8A8_UNORM (RGB),当我将其切换到 BGR 时,程序渲染到窗口/屏幕之外。几乎所有东西都更大。

有没有办法使用 RGB 将 Direct3D 11 与 2D 互操作,或者使应用程序渲染与 BGR 正确工作?

0 投票
1 回答
282 浏览

c# - 正确渲染重叠的三角形?

我开始学习 C# 中的 DirectX 9。我想渲染两个三角形并围绕 Y 轴旋转它们。

在这部分我初始化设备:

对于 VertexBuffer,我使用CustomVertex.PositionColored[].

在这一部分中,我设置了矩阵并渲染了原语:

起始位置

两个三角形,红在白前面

旋转后

相同的三角形,但旋转了; 红还在白前面

在第二张图片中,您可以看到我的问题。红色三角形在白色三角形的前面。如何在白色三角形后面绘制红色三角形?

0 投票
2 回答
875 浏览

c# - Linux相当于Direct draw

作为 ac# 程序员,我习惯了 Microsoft,但是,我真的很喜欢 linux 方面的东西,Mono 更好地为我打开了这个世界(imo)。

我有一个应用程序可能需要一些直接绘制支持才能显示活动视频,我很好奇 linux 中的等价物(甚至更好的是,Mono 提供什么支持)?