2

我一直在使用 opengl es 2.0 处理头骨。骷髅出现了,没有一些面孔:

在此处输入图像描述

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

解决了,但是头骨现在没有光出现,我没有更改着色器代码:

在此处输入图像描述

我尝试了其他照明算法,头骨继续变黑。我不明白 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);
 }

谢谢你。

4

0 回答 0