2012-04-20 55 views
0

我有一个应用程序,它使用SDL在窗口小部件中显示网络摄像头输出。我得到了每秒20-25帧的输出。嵌入式容器情况下的渲染性能

该输出然后嵌入到另一个进程中创建的QX11EmbedWidget容器。 (或者在使用XLib的另一个实现中,我将SDL窗口的输出重新设置为本机X11窗口)。

输出我在这种情况下获得是大约每秒2-5帧。第一步:在I.MX-53上运行Ubuntu;第二步:运行Ubuntu.MX-53;

; ; ;

。有些人可以解释这两种情况下的表现差异。 Q2302。当我们将应用程序的输出嵌入到另一个窗口时,渲染是否会发生两次?一旦通过嵌入的应用程序,然后嵌入了该窗口的应用程序?

回答

0

Q1。有些人可以解释这两种情况下的表现差异。

没有,真的没有。也许嵌入SDL窗口不起作用。或者您的平台上的X服务器存在一个错误。它可以是任何东西。

Q2。当我们将应用程序的输出嵌入到另一个窗口时,渲染是否会发生两次?一旦通过嵌入的应用程序,然后嵌入了该窗口的应用程序?

不,只在嵌入的窗口中完成渲染。

嵌入窗口只会改变父窗口。

该输出被嵌入到在另一个进程中创建的QX11EmbedWidget容器中。

您应该使用QX11EmbedContainer作为容器,而不是QX11EmbedWidget。

+0

@V约维奇假设我有应用程序A和B都在Qt和嵌入的输出为B.如果我错过了调用widget1.show()在app A [我相信在内部开始呈现呢?],然后我即使我渲染第二个应用程序,也不会看到输出结果吗?对不起,我错误地写了QX11EmbedWidget。 – 2012-04-20 10:15:09

+0

@AmitTomar你必须在容器上调用'show()'(否则你什么都看不到)。 – 2012-04-20 10:22:07

+0

@V Jovic如果我只在容器上调用show()而不是嵌入的部件,我什么都看不到。如果我只为嵌入的小部件调用它,而不是在容器上,那么我也什么都看不到。如果我为它们调用它,那么只有我看到输出。我是否应该从中推断出,渲染是在嵌入的容器和小部件中完成的? – 2012-04-20 10:26:19