gpt4 book ai didi

java - 在使用 OpenGL-ES、JNI 和 C++ 的 Android 上,帧似乎乱序了

转载 作者:行者123 更新时间:2023-11-28 08:09:17 25 4
gpt4 key购买 nike

我制作了一个 Android 应用程序,其中我在 JNI 上使用 OpenGL-ES 2.0 和 C++ 渲染所有内容,除了一件事外,它一切正常。渲染缓冲区似乎以某种方式出现了困惑,图像看起来像是拖着阴影。不知何故就像运动模糊,我不知道是什么原因造成的。

我只创建了一个带有 GLSurfaceView 的 Activity,该 Activity 有一个 Renderer 类,其中包含用于绘制的渲染调用。是什么导致了这种奇怪的行为?

创建万物的 Java 代码(减去一些不相关的东西)如下所示:

public class Main extends Activity  
{ static MainLoop mloop = null;

@Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
mloop = new MainLoop()
setContentView(mloop);
}
.
.
.
}

呈现的 Java 代码如下所示(再次减去一些不相关的东西):

public class MainLoop extends GLSurfaceView
{ .
.
public MainLoop()
{ super(parent);
setEGLContextClientVersion(2);
setEGLConfigChooser(8, 8, 8, 8, 0, 0)
//
this.getHolder().setFormat(PixelFormat.TRANSLUCENT);
//
setRenderer(new Renderer());
}
.
.

private static class Renderer implements GLSurfaceView.Renderer
{ public void onDrawFrame(GL10 gl)
{ JNIRender();
}
public void onSurfaceChanged(GL10 gl, int width, int height)
{ JNIChanged();
}
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{ JNICreate();
}
}
}

整个渲染是通过 C++ 中的 JNIRender 调用完成的,看起来很好,除了乱序的东西,所有东西看起来都好像拖着阴影。有什么我必须考虑的或者我做错了什么吗?

最佳答案

只是一个大胆的猜测,但是您是否在绘制任何内容之前清除了缓冲区?

在你的 C++ 代码中,在你绘制任何东西之前使用它:

glClearColor(0,0,0,1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BIT);

关于java - 在使用 OpenGL-ES、JNI 和 C++ 的 Android 上,帧似乎乱序了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511186/

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