小编Aar*_*uth的帖子

DirectX 屏幕捕获 - 桌面复制 API - AcquireNextFrame 的帧速率有限

我正在尝试使用 Windows桌面复制 API来捕获屏幕并将原始输出保存到视频中。我使用的AcquireNextFrame具有非常高的超时值(999 毫秒)。这样我就应该从 Windows 中获取每个新帧,无论如何,它自然应该是 60fps。我最终得到了一切看起来都很好的序列(第 6-11 帧),然后是看起来很糟糕的序列(第 12-14 帧)。如果我检查AccumulatedFrames

lFrameInfo.AccumulatedFrames
Run Code Online (Sandbox Code Playgroud)

该值通常为 2 或更高。根据我的理解,这意味着 Windows 会说“嘿等一下,我还没有适合你的框架”,因为调用 AcquireNextFrame 需要很长时间。但是一旦 Windows 最终给了我一个框架,它就会说“嘿,你实际上太慢了,最终错过了一个框架”。如果我能以某种方式获得这些帧,我想我会获得 60hz。

这可以通过日志记录进一步阐明:

I0608 10:40:16.964375  4196 window_capturer_dd.cc:438] 206 - Frame 6 start acquire
I0608 10:40:16.973867  4196 window_capturer_dd.cc:451] 216 - Frame 6 acquired
I0608 10:40:16.981364  4196 window_capturer_dd.cc:438] 223 - Frame 7 start acquire
I0608 10:40:16.990864  4196 window_capturer_dd.cc:451] 233 - Frame 7 acquired
I0608 10:40:16.998364  4196 window_capturer_dd.cc:438] 240 - Frame 8 start acquire
I0608 10:40:17.007876  4196 window_capturer_dd.cc:451] …
Run Code Online (Sandbox Code Playgroud)

c++ directx winapi screen-capture desktop-duplication

6
推荐指数
1
解决办法
1万
查看次数

如何旋转xyz点围绕xy或z轴定义的对象

我正在研究一个可视化分子的程序.分子由每个原子的多个x,y和z值表示.我希望能够做的是在每个坐标上进行一些数学计算,并使得到的分子在其中一个轴上旋转.我尝试过使用这些公式:

y' = y*cos q - z*sin q

z' = y*sin q + z*cos q

x' = x

以及Y和Z轴的对应关系.在180度的旋转中,所得分子看起来很好,但似乎是对映体(镜像).任何其他角度(360除外)使分子彼此分开.

我所希望的是所有原子都会"一起"旋转.如果重要的是我在Java工作.

谢谢您的帮助

编辑的代码

if (axis == 'X') {
        // y' = y*cos q - z*sin q
        // z' = y*sin q + z*cos q
        // x' = x
        y = y * Math.cos(radians) - z * Math.sin(radians);
        z = y * Math.sin(radians) + z * Math.cos(radians);
    }
    else if(axis == 'Y'){
        //z' = z*cos q - x*sin q
        //x' = z*sin …
Run Code Online (Sandbox Code Playgroud)

java 3d geometry rotation coordinates

5
推荐指数
0
解决办法
2898
查看次数

Oracle SQL Developer 字符串变量绑定

我正在使用 Oracle SQL Developer 4.0.1.14 并试图找出一些变量绑定。我从以下查询开始:

SELECT *
FROM Ships
WHERE UniqueId = 17;
Run Code Online (Sandbox Code Playgroud)

SELECT *
FROM Ships
WHERE UniqueId = :variable;
Run Code Online (Sandbox Code Playgroud)

这两个都成功执行。当您运行第二个时,Oracle SQL Developer 会提示您输入一个值,我输入了 17。但是,当我尝试使用字符串参数执行相同操作时,我没有成功(查询返回 0 行)。例如:

SELECT *
FROM Ships
WHERE ShipName = 'Atlantic Boat';
Run Code Online (Sandbox Code Playgroud)

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;
Run Code Online (Sandbox Code Playgroud)

只有第一次查询成功。我试过进入弹出窗口

大西洋船

《大西洋之舟》

《大西洋船》

和其他变化没有成功。我怎样才能使这项工作?

编辑:我尝试使用类似语句并发现了一些成功。

SELECT *
FROM Ships
WHERE ShipName LIKE '%Atlantic Boat%';
Run Code Online (Sandbox Code Playgroud)

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;
Run Code Online (Sandbox Code Playgroud)

两者实际上都有效。第二个需要 %Atlantic Boat%,没有字符串引号 ('')。然而,即使有 % 变化,我仍然无法让 = one …

sql string oracle variables binding

5
推荐指数
1
解决办法
5352
查看次数