gpt4 book ai didi

android - OpenGL ES 深度缓冲 android,无法开始工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:49:40 24 4
gpt4 key购买 nike

我无法让深度缓冲区在 Android OpenGL ES 2.0 上正常工作。无论我做什么,对象总是按照提供的顺序渲染,并完全忽略深度缓冲区。

根据我的阅读,默认设置应该有一个深度缓冲区,但我还是尝试了所有我能想到的功能来让它工作:

//setup
setEGLContextClientVersion(2);
setEGLConfigChooser( true );

GLES20.glEnable( GLES20.GL_DEPTH_TEST );
GLES20.glDepthFunc( GLES20.GL_LEQUAL );
GLES20.glDepthMask( true );

//render
GLES20.glClearColor(0.8f, 0.5f, 0.8f, 1.0f);
GLES20.glClearDepthf(1.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

我将对象放置在 z 轴的 0.5、0.0、-0.5 处。我可以验证这是否有效,因为如果我使用透视图,它将正确地改变对象的大小(远处的对象更小)——我的顶点着色器除了应用 View 矩阵之外什么都不做。如果我是对的,我根本无法在 ES 中改变 fragment 着色器的深度,所以这不会错。

我被难住了。我真的不知道我还能检查什么。我所做的每一次搜索(在网络上或此处)给出的答案似乎都无法解决问题(尽管这表明人们出于其他原因遇到了问题)。 ES 2.0 中的大多数示例实际上没有足够的对象来测试深度缓冲区,所以我也不能肯定示例代码是正确的。


要评论:在设置渲染器之前,我的“设置”部分是在派生的 GLSurfaceView 中调用“super”之后立即调用的。 “渲染”部分首先在我的渲染器“onDrawFrame”中调用。

最佳答案

您是否指定了缓冲区深度?这可能是您问题的解决方案。

myGlSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

关于android - OpenGL ES 深度缓冲 android,无法开始工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866686/

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