Wie kann ich mich bewerben 2 oder mehr Texturkarten zu einem gluSphere OpenGL-Objekt?

StackOverflow https://stackoverflow.com/questions/348266

  •  20-08-2019
  •  | 
  •  

Frage

Ich schreibe eine grundlegende Planet Viewer OpenGL Perl-Anwendung, nur so zum Spaß. Ich habe die Grundlagen arbeiten, mit dem herrlichen Planeten durch einen gluSphere() umgesetzt, angewandt mit der klassischen Erde Textur Karte zu drehen.

Nun, was ist, wenn ich will eine zweite Textur Karte durch OpenGL (sage sie, die „Erde Wolken“) anwenden?

Natürlich kann ich die zwei Textur in PhotoShop oder eine andere grafische Anwendung Karten selbst mischen, aber ist es eine Möglichkeit, durch OpenGL API?

Ich habe versucht, das Laden der beiden Texturen und die Mipmaps zu erzeugen, aber der Planet ist nur mit der ersten Textur gezeigt angewendet wird, nicht das zweite.

War es hilfreich?

Lösung

Wie Jim Buck sagte, können Sie den gewünschten Effekt mit Multitexturing erhalten.

Aber ich glaube nicht, die GLU quadrics Unterstützung Generation koordinieren Multitexture (dh glMultiTexCoord * () vs. glTexCoord * () verwenden. Also, ich glaube, Sie Ihren eigenen Sphäre Code benötigen, um den Multitexture Weg zu gehen.

Alternativ können Sie in der Lage sein, um wegzukommen mit einer etwas größeren Kugel um Ihre aktuelle Zeichnung, die die zweite Texturkarte auf sie (mit entsprechender Verwendung des Alphakanals & Blending). Dies dürfte allerdings z Bekämpfung verursachen, so kann es mehr Ärger als es wert ist.

Schreiben Sie Ihre eigenen Code Kugel nicht schwer ist - wahrscheinlich der einfachste Weg um zufriedenstellende Ergebnisse zu erhalten

.

Andere Tipps

Wie wollen Sie Ihre Texturen kombiniert werden? Sie sollten in der Lage sein, den gewünschten Effekt zu erzielen, wenn Sie einfach Multitexturierung verwenden:

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

Seien Sie sicher, dass die Einrichtung Ihres glTexEnvf Anrufe je nachdem, wie Sie wollen, dass die Texturen kombiniert werden. Dann ruft gluSphere ().

Ich bin mit Drew Hall. Vielleicht einfacher zu einer zweiten Kugel zu machen. Und nicht alle OpenGL-Karten unterstützen Multi-Texturing.

Sie können Zähler z-Kampf mit glPolygonOffset.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top