gpt4 book ai didi

opengl-es - eglQuerySurface 给出错误的大小

转载 作者:行者123 更新时间:2023-12-04 21:23:37 26 4
gpt4 key购买 nike

当我旋转我的设备并且我的应用程序收到 APP_CMD_CONFIG_CHANGED ,我尝试使用以下内容更新我的 OpenGL 视口(viewport):

EGLint width;
EGLint height;
eglQuerySurface(display,surface,EGL_WIDTH,&width);
eglQuerySurface(display,surface,EGL_HEIGHT,&height);

glViewport(0,0,width,height);

MY_LOG_MACRO2("New window size: %d x %d",width,height);

这大约有 20% 的时间有效。其他 80% 的时间宽度和高度是之前的值。换句话说,大多数情况下,当我将设备转为横向模式时,纵向尺寸都会被记录下来。当我回到纵向时,会记录横向大小。

ANativeWindow 获取大小我没有太多运气。任何一个。

旋转后我应该怎么做才能获得正确的窗口大小?

更新:

APP_CMD_CONFIG_CHANGED 之后等待几帧,大小总是正确的。每帧查询大小,不考虑 APP_CMD_CONFIG_CHANGED ,并检查它是否已更改似乎也有效,但感觉不对。

最佳答案

为了检测屏幕方向的变化,我决定不要捕捉 APP_CMD_CONFIG_CHANGED , 但请调用 eglQuerySurface()每一帧。如果屏幕尺寸值与保存的值不匹配,则屏幕方向已更改。

两次调用eglQuerySurface()获取宽度和高度大约需要 10 微秒(调用 10000 次时为 100 毫秒),因此它不会降低性能,并且 100% 保证将处理屏幕旋转。

我认为这个解决方案比在 APP_CMD_CONFIG_CHANGED 之后等待几帧要好。 .顺便说一句,将设备旋转 180 度(倒置)会导致得到 APP_CMD_CONFIG_CHANGED事件,但实际上没有更改屏幕方向,并且不应执行与调整大小相关的操作。

关于opengl-es - eglQuerySurface 给出错误的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com