2017-11-24 5 views
-2

生成されたディスクのテクスチャの仕方を理解できません。OpenGLのディスクテクスチャ

glBegin(GL_TRIANGLE_FAN); 
for (int i = 0; i <= segments; i++) { 
    float t = 2 * PI * i/segments; 
    glVertex2f(x1 + sin(t) * r, y1 + cos(t) * r); 
    glTexCoord2f(???); 
} 
glVertex2f(x1, y1); 
glEnd(); 
+3

どのようにテクスチャがどのように見えるか、ディスク上にどのようにマッピングするかによって異なります。 –

答えて

1

TLDR;

for (int i = 0; i <= segments; i++) { 
    auto t = 2.0f * PI * static_cast<float>(i)/static_cast<float>(segments); 
    glVertex2f(x1 + sinf(t) * r, y1 + cosf(t) * r); 
    glTexCoord2f(0.5f * sinf(t) + 0.5f, 0.5f * cosf(t) + 0.5f); 
} 
glVertex2f(x1, y1); 
glEnd(); 

[0,1]あなたのテクスチャ座標系を仮定しています。

+0

@toplessbananaあなたが探していたものと思われるので、あなたは必ず "ツアー"を読んでください。これは「ありがとう」コメントを書くよりも優れています。 – Scheff

+0

最初の頂点のテクスチャ座標がありませんか?第1のテクスチャ座標は、第1の頂点が記録された後に設定される。これらの2つの回線を交換するべきではありませんか?この場合、最後の頂点のテクスチャ座標はありません。 – BDL

+0

@toplessbanana将来あなたの質問に答えたい人がいたら、2つのことをしてください。1)SOの質問方法を読んでください。2)正しい答えを受け入れてください。余分なもの:すでに最新のOpenGLに移行! –