2012-04-05 132 views
1

我对opengl完全陌生,需要一些帮助来绘制纹理,并在其上应用渐变。opengl es:用渐变渐变绘制纹理

现在我画一个纹理下面的代码:

glPushMatrix(); 
glBindTexture(GL_TEXTURE_2D,fcr.texture); 
glTranslatef(trans, 0, 0); 
glScalef(sc,sc,1.0); 
glColor4f(1.0,1.0,1.0,0.4); 
glDrawArrays(GL_TRIANGLE_STRIP,0,4); 
glColor4f(1,1,1,1); 

在上面的代码glColor4f(1.0,1.0,1.0,0.4);适用透明度绘制图像。现在,我不想使用纯色透明色,而是使用透明渐变来模拟淡出效果。

发现此线程iPhone OpenGL - How to gradient fade out a texture?,这是我的问题相同,除了我想梯度应用于主图像本身而不是反射。但我无法从给出的答案中找出解决方案。

我想我应该使用glTexEnvi,但如何绘制另一个图像的梯度?

+0

你的意思是时间消逝,或者就像从左到右的渐变,其中左侧是不透明的,右侧是完全透明的(或顶部/底部,顶部/底部等)? – Tim 2012-04-05 16:54:40

+0

不需要随着时间的推移衰减动画,但只是静态衰落效果,因为你说。 – saiy2k 2012-04-06 04:13:50

回答

1

除了在绘制四边形之前调用glColor4f,您可以设置glColorPointer(或glVertexAttribPointer),使四边形的四个顶点中的每一个都获得不同的alpha值?

即RGBA值:

(x,x,x,1)  (x,x,x,0) 
    ----------------- 
    |    | 
    |    | 
    |    | 
    |    | 
    |    | 
    |    | 
    ----------------- 
    (x,x,x,1)  (x,x,x,0) 

这将使你由右至左的阿尔法梯度。

+0

工作辉煌,thx很多:) – saiy2k 2012-04-06 18:19:04