Opengl es 使用OpenGL ES进行(径向)渐变填充

Opengl es 使用OpenGL ES进行(径向)渐变填充,opengl-es,fill,radial-gradients,Opengl Es,Fill,Radial Gradients,我目前正在使用以下代码绘制一个形状 GLfloat vertex = // vertex points glLineWidth(2); glEnableClientState(GL_VERTEX_ARRAY); glColor4f(1.0, 0.0, 0.0, 1.0); glVertexPointer(2, GL_FLOAT, 0, vertex); glDrawArrays(GL_LINE_STRIP, 0, vertex_size); glDisableClientState(GL_V

我目前正在使用以下代码绘制一个形状

GLfloat vertex = // vertex points

glLineWidth(2);

glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(2, GL_FLOAT, 0, vertex);
glDrawArrays(GL_LINE_STRIP, 0, vertex_size);
glDisableClientState(GL_VERTEX_ARRAY);

我画的形状会自动闭合,可以用(径向)渐变填充这个形状吗?如果是这样的话,怎么做呢?

如果你在ES 1.x中,你就不能得到计算出的每像素径向梯度,因为颜色是在面上线性插值的。因此,您可以上载径向渐变纹理,也可以构建合适的几何体以提供近似径向渐变

在ES2.x中没有这样的限制,因为您定义的是每像素发生的事情。一个非常幼稚的径向渐变片段着色器可能是(即兴编码,未彻底检查语法):


这必须是
距离(myPosition,referencePosition)
,但我还没有使用片段着色器。你有没有可能把它扩展成一个更完整的例子?
varying mediump vec3 myPosition;
uniform mediump vec3 referencePosition;
uniform lowp vec4 centreColour, outerColour;

[...]

mediump float distanceFromReferencePoint =
                       clamp(distance(myPosition, referencePosition), 0.0, 1.0);

gl_FragColor = mix(centreColour, outerColour, distanceFromReferencePoint);