Skip to content
Discussion options

You must be logged in to vote

接口上是有详细的注释的: https://github.com/Tencent/libpag/blob/main/android/libpag/src/main/java/org/libpag/PAGPlayer.java#L189 。三者区别如下:
1)flush就是普通的刷新渲染内容。
2)flushAndFenceSync是等于flush加额外在结尾调用一个glFenceSync,并且把GLSync对象传递给你的数组的0号对象,拿出来强转为GLSync对象使用就行。如果你外部有自己的OpenGL的渲染依赖PAG的渲染结果,就获取这个GLSync,在你外部自定义OpenGL渲染之前调用 glWaitSync()插入一个GPU的等待指令。你的渲染代码就会等待PAG的渲染完成之后执行,并且不是阻塞的。插入完就可以删掉这个GLSync了。
3)第三个waitSync是反过来的使用场景,就是你的自定义OpenGL渲染代码产生了一个纹理,并且你包装成了PAGImage传入给PAG作为占位图使用。这时候PAG的渲染依赖你的外部渲染,所以你自己在外部渲染代码提交之后调用glFenceSync生成一个GLSync对象,然后传递给PAGPlayer::waitSync()。然后触发PAGPlayer的flush方法渲染,AG内部会把你传递进来的GLSync执行一下glWaitSync并删除。

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by domchen
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants