问题标签 [direct2]

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 回答
306 浏览

mfc - 奇怪的 CBitmapRenderTarget::GetBitmap API - Direct2D MFC

我对directd2d 接口的MFC 包装器完全感到困惑。看看下面的例子: -

bitmapTarget 当此方法返回时,包含指向新位图渲染目标的指针的地址。此参数未初始化传递。

我对应该传递给函数的内容完全感到困惑。与文档相反,它接收对象而不是指向未初始化的指针,如 Directd2d IDL。并且对象必须被初始化。

现在可以看出 CBitmapRenderTarget 是一个使用默认构造函数创建的对象。但是,这不适用于 CBitmapRenderTarget 的 GetBimap 成员,该成员也遵循文档中的相同模式:-

位图 当此方法返回时,包含此渲染目标的有效位图。该位图可用于绘图操作。

但是 CD2DBitmap 没有默认的ctor,所以我不能首先创建对象。问题是我如何正确调用 CBitmapRenderTarget API 的 GetBitmap。如何创建未初始化的 CD2DBitmap 对象???

0 投票
1 回答
397 浏览

c++ - Direct2D 仅在 C++ Builder 中部分链接

我有一个 C++ Builder (Rad Studio Berlin) 项目设置来使用 Direct2d。画布绘图与 TDirect2DCanvas 一起工作得很好,这表明 Direct2D 正在正确链接。一切都顺利渲染。但是,我需要使用矩阵。尝试链接时出现链接错误。例如,当我尝试时:

...我收到以下链接错误:

如果我只包含标题,C++ builder 应该已经设置为链接到 direct2d。任何人都可以帮助我以 C++ Builder 方式链接相应的文件吗?

0 投票
0 回答
63 浏览

xlsx - MS-XCA 解压缩元数据点位于压缩字节数组之外

我需要解压缩嵌入在 xlsx 文件中的数据模型文件。该文件应该使用 MS-XLDM 文件格式,应该由 3 个部分(电子表格数据模型头、文件和虚拟目录)组成,只有中间一个被压缩。第一个和最后一个部分是 xml 与 unicode/utf-16 编码大概(每隔一个字节是 0x00 并且内容前面是 0xFF 和 0xFE )。中间文件前面是一小块 xml。有关文件结构的更多详细信息。

现在根据文档,应该使用此处指定的 Xpress 压缩来压缩文件,该压缩使用 LZ77 压缩和 DIRECT2 编码。

现在进入正题。据我了解,应该总是有一个 4 字节的位掩码,指示相应位置的字节是否应该是 1:1 数据或元数据。

例如,给定一个假设的 8 位位掩码,字符串“ABCABCDEF”被压缩为 (0,0)A(0,0)B(0,0)C(3,3)D(0,0)E( 0,0)F。它的位掩码是 b'00010001' (0x11)。

如果给定位置应该是元数据,则至少应读取 2 个字节。在 16 位中,前 13 位是偏移量,后 3 位是长度(除非最后一位是 1,否则必须读取另一个字节)。

所以现在到我挣扎的具体例子。前 2 块很容易。

第一个是:

前 4 个字节(点)是 0x00,因此后面的 32 个字节是未压缩的。下一个块是相似的:

现在第三块是我迷路的地方

我不确定该块到底在哪里结束,因为当我开始在第一个字节之后每 36 个字节计数一次时,我会到达应该未压缩的字节流的一部分并且它没有对齐。

所以回到第三块。这个的位掩码是0x77 0xB1 0x04 0x01

或二进制01110111 10110001 00000100 00000001。我试图将它与字节对齐,但这没有任何意义。显然“引擎”这个词是未压缩的,它适合前面的块,因为快速的谷歌搜索向我显示了一个带有命名空间“ http://schemas.microsoft.com/analysisservices/2003/engine ”的结果。

这让我觉得如果位掩码是相反的顺序,可能是字节。这对我来说更有意义。

如果这是真的,那么元数据应该是0x0B 0x02

或二进制00001011 00000010。因此,如果我将其拆分,前 13 位构成元数据的偏移量。长度为 010 +恒定偏移量3 = 2+3=5。

但是向后看 353 个字节,它位于未压缩的分区 xml 部分,应该返回括号中的字符(ame)。这对我来说没有意义,而且可能是错误的。

这是我尝试解压缩的文件。

0 投票
1 回答
278 浏览

c++ - IDXGISurface::Map:此对象不是使用允许 CPU 访问的 CPUAccess 标志创建的

我尝试创建新ID3D11Texture2D的以将其映射到DXGI_MAPPED_RECT进一步。我收到了一些ID3D11Texture2D我没有电源的东西(不能改变创建方式)。

这是代码的一部分:

_pTexIn是一个输入 ID3D11Texture2D。我收到以下错误,而Map()

DXGI 错误:IDXGISurface::Map:此对象不是使用允许 CPU 访问的 CPUAccess 标志创建的。[其他错误 #42:] 在 testhost.x86.exe 中的 0x76734192 处引发异常:Microsoft C++ 异常:_com_error 在内存位置 0x0716E134。线程 0x26bc 以代码 0 (0x0) 退出。

但!,其实我已经D3D11_CPU_ACCESS_READ设置好了cpNewTexture。请参阅下面的 ntd 和 sd 的输出:

这是ntdand的内容sd