我一直在嘗試使用各種代碼片斷在線代碼opengl中的球體,但運行代碼後,這是一個流浪的頂點,我不知道我的代碼在哪裏錯過了它:OpenGL頂點數組球面散射頂點
CODE:
float Lats = 1/(float)(longitude-1);
float Longs = 1/(float)(latitude-1);
int r,s;
vector<GLfloat> vertices;
vector<GLfloat> normals;
vector<GLfloat> texcoords;
vector<GLushort> indices;
for(r = 0; r < longitude; r++)
{
for(s = 0; s < latitude; s++)
{
float const x = cos(2*M_PI * s * Longs) * sin(M_PI * r * Lats);
float const y = sin(-M_PI_2 + M_PI * r * Lats);
float const z = sin(2*M_PI * s * Longs) * sin(M_PI * r * Lats);
vertices.push_back(x * getR());
vertices.push_back(y * getR());
vertices.push_back(z * getR());
normals.push_back(x);
normals.push_back(y);
normals.push_back(z);
texcoords.push_back(s*Lats);
texcoords.push_back(r*Longs);
}
}
for(r = 0; r < longitude; r++)
{
for(s = 0; s < latitude; s++)
{
indices.push_back(r * latitude + s);
indices.push_back(r * latitude + (s+1));
indices.push_back((r+1) * latitude + (s+1));
indices.push_back((r+1) * latitude + s);
}
}
任何人都可以看到我在哪裏呢?
我們可以看到完整的渲染代碼?也許當你畫線(我假設你使用glBegin/glEnd原語?)時,第一個點不是你定義的圓的第一個頂點,而是(0,0,0)頂點,無論出於何種原因。 – Tuxer
我正在使用GL_QUADS繪圖的頂點數組 – Split