2012-04-09 3 views
0

Was ich gerade habe: Erzeugen von Texturkoordinaten mit Angabe der Breite und Höhe eines Rechtecks ​​sowie eines Skalierungsfaktors für die Textur. dies ist woking fein:GopenGL align texture coordinates to world, um nicht ins Blickfeld zu kommen

vertices = new float[] { 
        0,   0,    0, this.height/(this.texture.height * this.texScaleHeight), 
        this.width, 0,    this.width/(this.texture.width * this.texScaleWidth), height/(this.texture.height * this.texScaleHeight), 
        this.width, this.height, this.width/(this.texture.width * this.texScaleWidth), 0, 
        0,   this.height, 0, 0 }; 

Was soll ich jetzt tun, ist, dass einige Rechtecke mit unterschiedlichen Positionen eine nahtlose Graduierung für die Texturen (dh nebeneinander.). Ich habe folgendes versucht, aber kein gutes Ergebnis.

Wie kann ich erreichen, dass Texturen "auf die Welt ausgerichtet" sind und nicht auf das Rechteck, auf dem sie sitzen?

Antwort

0

Diese Technik ist potentiell Weise zu allgemein, aber hier geht es: Sie könnten Projekt die Textur auf die Geometrie Koordinaten.

Der gesamte Arbeitsablauf ist genauso wie die Handhabung der Geometrie selbst, aber hier werden allen Weltpunkten Texturkoordinaten zugewiesen. Drücke jeden Punkt in der Geometrie durch eine andere MVP-Matrix (die den Projektor darstellt) und nimm das (x, y) Ergebnis für die Texturkoordinate genau dieses Punktes (unter der Annahme einer orthographischen Projektion); Perspektive erfordert Division durch w danach.

Ich hoffe, Sie bekommen die Idee. Auf der Suche nach, fand ich keine anständige Beschreibung oder Tutorial. Shadow Mapping verwendet die gleiche Technik, aber sein Ziel ist es zu bestimmen, ob ein Punkt beschattet ist oder nicht; hier besteht das Ziel darin, Texturkoordinaten für einen allgemeinen Projektor zu finden.