3
我想通过使用顶点缓冲区对象绘制圆以在iPhone上的OpenGL ES 2.0中启用GL_POINT_SMOOTH。使用iPhone的OpenGL ES 2.0:GL_POINT_SMOOTH使用ES 2.0绘制正方形,但在ES 1.0中工作
我用以下ES 1.0渲染代码画圆成功在iPhone 4:
glVertexPointer(2, GL_FLOAT, 0, circleVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glEnable(GL_POINT_SMOOTH);
glPointSize(radius*2);
glDrawArrays(GL_POINTS, 0, 1);
我现在尝试使用一个建立VBO随后该ES 2.0,以达到同样的效果渲染代码:
glEnable(GL_BLEND);
glEnable(GL_POINT_SPRITE_OES);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glDrawElements(GL_POINTS, numPoints, GL_UNSIGNED_SHORT, BUFFER_OFFSET(0));
但是,输出顶点非常清晰,不是圆形。
我试着减少'glEnable'和上面的相关调用来模拟第一个工作版本,但输出中没有可见的变化;形状仍然是方形的。我也尝试用以下代码替换'glDrawElements':
glDrawArrays(GL_POINTS,0,numPoints);
..但再次没有变化。
点大小设置在顶点着色器,并且着色器成功编译和运行:
uniform mediump mat4 projMx;
attribute vec2 a_position;
attribute vec4 a_color;
attribute float a_radius;
varying vec4 v_color;
void main()
{
vec4 position = vec4(a_position.x,a_position.y,1.0,1.0);
gl_Position = projMx * position;
gl_PointSize = a_radius*2.0;
v_color = a_color;
}
有谁知道为什么圆不与glDrawElements VBO版本绘制?
嘿是的,我解决了其他问题,并在其他线程回应;)谢谢! – KomodoDave
只是为了澄清他人:这个线程中的问题没有解决! – KomodoDave