问题描述
我写了一个带有投影算法的顶点着色器,所以我没有使用投影矩阵。出于某种原因,当我启用深度缓冲区时,屏幕保持完全空白。在顶点着色器中,我将相机到顶点的距离传递给 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 (将#修改为@)