使用此功能,我可以在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纹理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)