android-球体上的OpenGL纹理

android-球体上的OpenGL纹理,第1张

概述使用此功能,我可以在OpenGLES1.0forAndroid中创建一个球体:publicBall(GL10gl,floatradius){ByteBufferbb=ByteBuffer.allocateDirect(40000);bb.order(ByteOrder.nativeOrder());sphereVertex=bb.asFloatBuffer();points=build();}priv

使用此功能,我可以在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

我该怎么做才能正确使用纹理?

解决方法:

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

UV Mapping a Sphere

总结

以上是内存溢出为你收集整理的android-球体上的OpenGL纹理全部内容,希望文章能够帮你解决android-球体上的OpenGL纹理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存