С помощью этой функции можно создать сферу в OpenGL ES 1.0 для Android:OpenGL текстуры на сфере
public Ball(GL10 gl, float radius)
{
ByteBuffer bb = ByteBuffer.allocateDirect(40000);
bb.order(ByteOrder.nativeOrder());
sphereVertex = bb.asFloatBuffer();
points = build();
}
private int build()
{
double dTheta = STEP * Math.PI/180;
double dPhi = dTheta;
int points = 0;
for(double phi = -(Math.PI/2); phi <= Math.PI/2; phi+=dPhi)
{
for(double theta = 0.0; theta <= (Math.PI * 2); theta+=dTheta)
{
sphereVertex.put((float) (raduis * Math.sin(phi) * Math.cos(theta)));
sphereVertex.put((float) (raduis * Math.sin(phi) * Math.sin(theta)));
sphereVertex.put((float) (raduis * Math.cos(phi)));
points++;
}
}
sphereVertex.position(0);
return points;
}
public void draw()
{
texture.bind();
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, sphereVertex);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, points);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
Моя проблема сейчас в том, что я хочу использовать this texture для сферы, но затем создается только черный шар (конечно, потому что верхний правый угол черный). Я использую это координаты текстуры, потому что я хочу использовать всю текстуру:
0|0 0|1 1|1 1|0
Что я должен сделать, чтобы правильно использовать текстуру?