【发布时间】:2019-09-17 18:44:09
【问题描述】:
我想绘制一个球体并对其进行纹理化,我用三角形绘制它,当我尝试对其进行纹理化时,一些三角形没有被覆盖
我正在使用这个函数来生成坐标
public void createSolidSphere()
{
float R = (float) (1./(float)(rings-1));
float S = (float) (1./(float)(sectors-1));
int r, s;
int texCoordsIndex = -1;
int verticesIndex = -1;
int normalsIndex = -1;
int indicesIndex = -1;
for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) {
float y = (float)Math.sin( -Math.PI/2 + Math.PI * r * R );
float x = (float)Math.cos(2*Math.PI * s * S) * (float)Math.sin( Math.PI * r * R );
float z = (float)Math.sin(2*Math.PI * s * S) * (float)Math.sin( Math.PI * r * R );
texcoords[++texCoordsIndex] = s*S;
texcoords[++texCoordsIndex] = r*R;
vertices[++verticesIndex] = x * radius;
vertices[++verticesIndex] = y * radius;
vertices[++verticesIndex] = z * radius;
normals[++normalsIndex] = x;
normals[++normalsIndex] = y;
normals[++normalsIndex] = z;
}
for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) {
indices[++indicesIndex] = r * sectors + (s+1);
indices[++indicesIndex] = (r+1) * sectors + (s+1);
indices[++indicesIndex] = (r+1) * sectors + s;
}
}
【问题讨论】: