Opengl es 无法从球体内部查看纹理opengl es

Opengl es 无法从球体内部查看纹理opengl es,opengl-es,Opengl Es,我正在学习opengl es 2,我有一个带有纹理的球体。我可以从外面看,但是如果我把相机放进去,我所看到的就是黑暗。我试图用以下方法解决这个问题: GLES20.glCullFace(GLES20.GLU前和GLU后) 但我仍然看到一个黑屏。是因为光线吗?如何从球体内部查看纹理 以下是着色器: final String vertexShader = "uniform mat4 u_MVPMatrix; \n" // A constant representin

我正在学习opengl es 2,我有一个带有纹理的球体。我可以从外面看,但是如果我把相机放进去,我所看到的就是黑暗。我试图用以下方法解决这个问题:

GLES20.glCullFace(GLES20.GLU前和GLU后)

但我仍然看到一个黑屏。是因为光线吗?如何从球体内部查看纹理

以下是着色器:

final String vertexShader =
        "uniform mat4 u_MVPMatrix;      \n"     // A constant representing the combined model/view/projection matrix.

                + "attribute vec4 a_Position;     \n"     // Per-vertex position information we will pass in.
                + "varying vec2 vTexCoord;        \n"
                + "attribute vec2 vTexCoord0;     \n"
                + "void main()                    \n"     // The entry point for our vertex shader.
                + "{                              \n"
                + "   gl_Position = u_MVPMatrix   \n"     // gl_Position is a special variable used to store the final position.
                + "               * a_Position;   \n"     // Multiply the vertex by the matrix to get the final point in
                + "   vTexCoord = vTexCoord0;     \n"
                + "}                              \n";    // normalized screen coordinates.


final String fragmentShader =
        "precision mediump float;                          \n"
                + "varying vec2 vTexCoord;                           \n"
                + "uniform sampler2D sTexture;                       \n"
                + "void main()                                       \n"
                + "{                                                 \n"
                + "  gl_FragColor = texture2D( sTexture, vTexCoord );\n"
                + "}    
告诉它剔除(不显示)前面和后面的三个。使用该设置时,您不应该从内部或外部看到任何东西。请尝试“无”。

GLES20.glCullFace(GLES20.GL\u-FRONT\u和\u-BACK);意味着您希望它同时剔除(即不渲染)正面和背面。很难想象有人会愿意这样做

要在C中关闭剔除,需要执行以下操作

glDisable(GL_CULL_FACE);
我猜想,对于Java绑定,该命令如下所示

GLES20.glDisable(GLES20.GL_CULL_FACE);

取决于着色器的编写方式。我已经发布了着色器。然后它不是灯光,因为着色器中没有任何灯光计算。3年后,我打算再次测试该项目,不得不更改目标SDK版本,只有更改后,我才能从内部看到纹理。不知道为什么我尝试了GLES20.glCullFace(GLES20.Glu NONE);还是什么都看不见。那么这可能是由于近剪裁的缘故?球体的大小是多少?投影矩阵中的近剪裁范围设置为多少?
GLES20.glDisable(GLES20.GL_CULL_FACE);