使用此功能,我可以在OpenGL ES 1.0 for Android中创建一个球体:
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
如何正确使用纹理?
答案 0 :(得分:2)
您需要为球体上与您提供的纹理匹配的每个点设置UV(纹理线)。以下是有关UV映射的一些信息的链接。
答案 1 :(得分:2)
只需下载并使用代码,您就可以使用想要的图像更改图像
https://docs.google.com/file/d/0By5c3cOVKbFpVTFpUlFlV2pGVWM/edit?pli=1