在opengl es 2.0中的gldisable(gl_cull_face)之后的照明问题

时间:2012-08-15 15:54:05

标签: opengl-es opengl-es-2.0

我一直在使用opengl es 2.0工作。头骨出现时没有一些面孔:

enter image description here

之后我决定禁用gl_cull_face。面孔的问题是

已经解决了,但是头骨现在没有亮光了,我还没改变着色器代码:

enter image description here

我尝试过其他照明算法,头骨继续变黑。我无法理解gldisable(gl_cull_face)和灯光之间的关系是什么。着色器代码是:

顶点着色器:

uniform mediump mat4 MODELVIEWMATRIX;
uniform mediump mat4 PROJECTIONMATRIX;
uniform mediump mat3 NORMALMATRIX;
uniform mediump vec3 LIGHTPOSITION;

varying lowp vec3 lightcolor;
attribute mediump vec3 POSITION;
attribute lowp vec3 NORMAL;
lowp vec3 normal;
attribute mediump vec2 TEXCOORD0;
varying mediump vec2 texcoord0;

void main( void ) {

   mediump vec3 position =  vec3( MODELVIEWMATRIX * vec4( POSITION, 1.0 ) );
   normal = normalize( NORMALMATRIX * NORMAL );
   mediump vec3 lightdirection = normalize( LIGHTPOSITION - position );
   lowp float ndotl = max( dot( normal, lightdirection ), 0.0 );
   lightcolor = ndotl * vec3( 1.0 );
   gl_Position = PROJECTIONMATRIX * vec4( position, 1.0 );
   texcoord0 = TEXCOORD0;
  }


片段着色器:

 varying mediump vec2 texcoord0;
 uniform sampler2D DIFFUSE;
 varying lowp vec3 lightcolor;

 void main( void ) {
   gl_FragColor = texture2D( DIFFUSE, texcoord0 ) * vec4( lightcolor, 1.0 ) + vec4( 0.1);
 }

谢谢。

0 个答案:

没有答案