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