2016-04-16 11 views
0

私はopenglを学んでいます。私はテクスチャを持つ球を持っています。私は外から見ても問題ありませんが、カメラを入れると暗く見えます。私はこれを解決しようとしました:球の中からテクスチャを見ることはできません。opengl-es

GLES20.glCullFace(GLES20.GL_FRONT_AND_BACK);

しかし、私はまだ黒い画面が表示されます。それは光によるものですか?私は球の内部からテクスチャを見るために何ができますか?

これらのシェーダである:

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" 
       + "}  
+0

のように見えることは、私が持っているあなたのシェーダが –

+0

書かれている方法によって異なりますシェイダーを投稿しました。 – takluiper

+0

それでは、シェーダにライト計算がないので、ライトではありません –

答えて

0
GLES20.glCullFace(GLES20.GL_FRONT_AND_BACK); 

前面および背面に面しをトリス両方(図示せず)淘汰するためにそれを伝えます。あなたは、その設定で内側または外側から何も見るべきではありません。代わりに "NONE"を試してください。

+0

私はGLES20.glCullFace(GLES20.GL_NONE)を試しました。まだ何も表示されません – takluiper

+0

OK。それはおそらく、近いクリッピングに起因する可能性がありますか?球のサイズはどれくらいですか?投影行列に設定されている近くのクリッピング範囲は何ですか? – reden

0

GLES20.glCullFace(GLES20.GL_FRONT_AND_BACK);前面と背面の両方を切り抜く(つまりレンダリングしない)ことを意味します。誰もがそれをやりたいと思う状況を想像するのは難しいです。

Cにカリングオフにするには、あなたが

glDisable(GL_CULL_FACE); 

を行う必要があると思います、私はあなたのJavaコマンドを結合するための推測が

GLES20.glDisable(GLES20.GL_CULL_FACE); 
関連する問題