gpt4 book ai didi

android - 球体上的 OpenGL 纹理

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:14 24 4
gpt4 key购买 nike

通过这个函数,我可以在 Android 的 OpenGL ES 1.0 中创建一个球体:

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

我需要做什么才能正确使用纹理?

最佳答案

您需要为球体上与您提供的纹理相匹配的每个点设置 UV(纹理线)。这是有关 UV 贴图的一些信息的链接。

UV Mapping a Sphere

关于android - 球体上的 OpenGL 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com