opengl es:绘制具有渐变渐变的纹理

时间:2012-04-05 13:25:26

标签: opengl-es gradient

我对opengl完全不熟悉,在绘制渐变纹理时需要一些帮助。

现在我正在使用以下代码绘制纹理:

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,但是如何使用渐变来绘制另一个图像?

1 个答案:

答案 0 :(得分:1)

不是在绘制四边形之前调用glColor4f,而是设置glColorPointer(或glVertexAttribPointer),这样四边形的四个顶点中的每一个都会得到不同的alpha值?

即。 RGBA值:

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

这会给你一个从右到左的alpha渐变。