Frage

Ich versuche, einen farbigen Würfel zu machen, nachdem andere Würfel-Rendering, die Texturen haben. Ich habe mehrere „Schublade“ Objekte, die die Schublade Schnittstelle entsprechen und gebe ich jeweils einen Verweis auf das GL-Objekt der ziehen (endgültige GL gl) Methode der einzelnen Implementierungsklasse. Doch egal, was ich tue, ich scheine nicht in der Lage einen farbigen Würfel zu machen.

Codebeispiel:

gl.glDisable(GL.GL_TEXTURE_2D);

gl.glColor3f( 1f, 0f, 0f );
gl.glBegin(GL.GL_QUADS);
// Front Face
Point3f point = player.getPosition();

gl.glNormal3f(0.0f, 0.0f, 1.0f);
//gl.glTexCoord2f(0.0f, 0.0f);

gl.glVertex3f(-point.x - 1.0f, -1.0f, -point.z + 1.0f);
//gl.glTexCoord2f(1.0f, 0.0f);

gl.glVertex3f(-point.x + 1.0f, -1.0f, -point.z + 1.0f);
//continue rendering rest of cube. ...
gl.glEnd();
gl.glEnable(GL.GL_TEXTURE_2D);

Ich habe auch versucht die glColor3f werfen ruft vor jedem Eckpunkt Anruf, aber das gibt mir noch einen weißen Würfel. Was ist los?

War es hilfreich?

Lösung

Es gibt ein paar Dinge, die Sie müssen sicherstellen, dass Sie tun.

Zunächst einmal:

gl.glEnable(gl.GL_COLOR_MATERIAL);

Damit können Sie Farben auf Ihre Eckpunkte gelten. (Tun Sie dies, bevor Sie Ihre Anrufe zu glColor3f.)

Wenn dies noch nicht das Problem beheben, stellen Sie sicher, dass Sie das Mischen verwenden richtig (wenn Sie mit gar verschmelzen.)

Für die meisten Anwendungen werden Sie wahrscheinlich verwenden möchten

gl.glEnable(gl.GL_BLEND);
gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA);

Wenn keines dieser Dinge, die Ihr Problem lösen, könnten Sie uns einige weitere Informationen geben über das, was Sie tun / Einrichtung vor diesem Abschnitt des Codes.

Andere Tipps

Wenn Beleuchtung aktiviert ist, kommt Farbe aus dem Material, nicht die glColor Vertexfarben. Wenn Ihre Zeichenfunktion erwähnen, dass Sie ein Material für die strukturierten Objekte (und ein weißes Material unter der Textur wäre häufig) Einstellung dann der Rest des Würfels wäre weiß. Mit GL_COLOR_MATERIAL OpenGL richtet die glColor Befehle zu nehmen und das Material, anstatt nur die Vertex Farbe aktualisieren wollen, so arbeiten, dass sollte.

Also, einfach gesagt, wenn Sie Beleuchtung aktiviert haben, versuchen GL_COLOR_MATERIAL.

Eine Sache, die Sie vielleicht ausprobieren möchten ist: glBindTexture(GL_TEXTURE_2D, 0); die Textur auf Null zu binden

.

Einige Dinge zu überprüfen:

  • Sie haben einen Shader aktiv?
  • Jede gl-Fehler?
  • Welche anderen Staaten haben Sie ändern? Zum Beispiel GL_COLOR_MATERIAL, Mischen oder Beleuchtung wird das Aussehen Ihrer Geometrie ändern.
  • Funktioniert es, wenn Sie die nicht-strukturierten Würfel zuerst ziehen? Und wenn es nicht versuchen, bei der, um herauszufinden, zeigt es wird weiß. Es ist auch möglich, dass der Würfel nur in der richtigen Farbe im ersten Frame angezeigt wird, dann gibt es auf jeden Fall ein GL Staat beteiligt.
  • Einlegen von glPushAttrib / glPopAttrib am Anfang / Ende der Zeichnungsmethoden helfen kann, aber es ist besser, um herauszufinden, was das Problem in erster Linie verursacht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top