在片段着色器中添加变化的变量会在Android上使用opengl GLES20破坏渲染

问题描述

我正在尝试在android上渲染3d网格,顶点的位置如下所示:

        var positionHandle = GLES20.glGetAttribLocation(program,"vPosition").also {
            GLES20.glEnableVertexAttribArray(it)

            GLES20.glVertexAttribPointer(
                it,3,GLES20.GL_FLOAT,false,12,vertexBuffer
            )
        }

我的顶点着色器:

    uniform mat4 uMVPMatrix;
    attribute vec4 vPosition;
    varying vec4 positionOut;
    void main() {
      gl_Position = uMVPMatrix * vPosition;
      positionOut = vPosition;
    }

片段着色器:

    varying vec4 positionOut;
    precision mediump float;
            void main() {
               gl_FragColor = vec4(1,1,1);
            }

此代码在一个设备(OnePlus设备上的Android 9)上可以正常工作,但在(Android 10 Samsung Galaxy设备)上不起作用,并且不会引发任何错误。

如果我从片段着色器中删除行varying vec4 positionOut;,则渲染起作用。 问题是,为什么仅可变变量的定义会破坏渲染?我现在不使用该变量,但我想在下一步中使用它。

解决方法

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

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

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