2017-11-24 1 views
-2

Ich habe Probleme herauszufinden, wie man eine generierte Disc texturiert.OpenGL texturieren einer Disc

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

Das hängt davon ab, wie die Textur aussieht und wie Sie sie auf der Disc abbilden möchten. –

Antwort

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(); 

Ihre Textur-Koordinatensystem Unter der Annahme ist [0,1].

+0

@toplessbanana Wie Sie sicherlich in "die Tour" gelesen haben, bitte, _akzeptieren_ Sie die Antwort, da es die zu sein scheint, die Sie gesucht haben. Das ist besser als "Danke" Kommentare zu schreiben. – Scheff

+0

Gibt es nicht die Texturkoordinate für den ersten Vertex? Die erste Texturkoordinate wird gesetzt, nachdem der erste Vertex aufgezeichnet wurde. Sollten diese beiden Linien nicht ausgetauscht werden? In diesem Fall fehlen die Texturkoordinaten für den letzten Eckpunkt. – BDL

+0

@toplessbanana Wenn du möchtest, dass Menschen in Zukunft deine Fragen beantworten, mache bitte 2 Dinge: 1) Lies, wie man Fragen zu SO stellt 2) Akzeptiere die richtige Antwort. Und extra eins: Move auf moderne OpenGL bereits! –