深度缓冲区在 android 上不起作用 Opengl es

问题描述

我写了一个带有投影算法的顶点着色器,所以我没有使用投影矩阵。出于某种原因,当我启用深度缓冲区时,屏幕保持完全空白。在顶点着色器中,我将相机到顶点的距离传递给 z 和 w。我在 onSurfaceCreated 中写了这些行来激活深度缓冲区:

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

激活深度缓冲

这是顶点着色器:

#version 300 es
in vec3 aPos;
out vec4 lColor;
uniform vec4 vm;

void main()
{
vec4 rColor = vec4(sin(aPos.x * aPos.x),sin(aPos.y * aPos.y),sin(aPos.z * aPos.z),1.0f);
lColor = rColor;

float x2 = (aPos.x * cos(vm.y) - (aPos.z) * sin(vm.y));
float z2 = ((aPos.x * sin(vm.y) + (aPos.z) * cos(vm.y))) + 7.0f;

float y2 = (aPos.y * cos(vm.z) - (z2 - 7.0f) * sin(vm.z));
float z3 = ((aPos.y * sin(vm.z) + (z2 - 7.0f) * cos(vm.z))) + 7.0f;

float dst = sqrt((aPos.x * aPos.x) + (aPos.y * aPos.y) + (aPos.z *  aPos.z));
gl_Position = vec4(x2 / z3 * vm.x,y2 / z3 * vm.x  * vm.w,dst,dst);

}

main 中的前两行,仅用于生成或多或少的随机颜色,后四行用于旋转,因此您可以忽略它们。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)