我对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
,但是如何使用渐变来绘制另一个图像?
答案 0 :(得分:1)
不是在绘制四边形之前调用glColor4f,而是设置glColorPointer(或glVertexAttribPointer),这样四边形的四个顶点中的每一个都会得到不同的alpha值?
即。 RGBA值:
(x,x,x,1) (x,x,x,0)
-----------------
| |
| |
| |
| |
| |
| |
-----------------
(x,x,x,1) (x,x,x,0)
这会给你一个从右到左的alpha渐变。