在我的openGL游戏中,我通常使用onDrawFrame()中的GLSurfaceView.Renderer类来绘制场景.但是,当我显示加载屏幕时,我想在加载每个数据项后强制屏幕绘制,以便可以显示加载栏.
是否有可能以某种方式在绘制调用期间强制执行bufferswap?我唯一的选择是在多个框架上错开装载,这意味着需要进行大量的返工.
我想我想要调用的是eglSwapBuffers(),但我找不到从GLSurfaceView或GLSurfaceView.Renderer访问egl上下文的方法.
感谢您的时间.
您还可以将此方法添加到GLSurfaceView.Renderer类:
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
public void swapBuffers()
{
EGL10 curEgl = (EGL10)EGLContext.getEGL();
EGLDisplay curDisplay = curEgl.eglGetCurrentDisplay();
if (curDisplay == EGL10.EGL_NO_DISPLAY) { Log.e("myApp","No default display"); return; }
EGLSurface curSurface = curEgl.eglGetCurrentSurface(EGL10.EGL_DRAW);
if (curSurface == EGL10.EGL_NO_SURFACE) { Log.e("myApp","No current surface"); return; }
curEgl.eglSwapBuffers(curDisplay, curSurface);
}
Run Code Online (Sandbox Code Playgroud)
与OpenUserX03的答案大致相同,只是在Java中.
不,您不能(或不应该)在渲染器的 onDraw 方法中强制交换缓冲区。
您应该做的是在单独的线程中加载数据。您的 onDraw 方法仍会定期调用,这将让您询问加载线程加载了多少项目,以相应地显示进度条/消息。
| 归档时间: |
|
| 查看次数: |
6168 次 |
| 最近记录: |