# OpenGL Textur und nicht Textur



## Anton2k (13. Jan 2012)

Hallo,
ein erstes Problem hab ich schon mal gefunden beim einlesen. Leider konnte ich noch nicht das finden was ich gesucht hab da Tutorials entweder Textur oder nicht Texturen abdecken. 

Ich hab ein Viereck auf welchem eine Textur liegt...klappt wunderbar. Jetzt wollte ich bei dem Objekt anzeigen wenn es angeklickt ist...also simpel einfach mal nen strich dransetzen...tja nur leider färbt er mir alle Objekte dann in der Farbe die ich auswähle und mahlt mir zusätzlich nicht mal meinen strich.

Hab schon einiges rumprobiert wie Textur Modus ausschalten aber nichts bewirkt etwas...bin noch total verwirrt von OpenGL muss ich dazu sagen, weshalb mir eine einfache Lösung bzw. Fehlersuche helfen würde.


```
glEnable(GL_BLEND);
			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
			glEnable(GL_TEXTURE_2D); 
			
			glBegin(GL_QUADS);
				glTexCoord2f(tx,ty);
				glVertex2i((int)(((x-UniverseSystem.viewportX)-(width/2))*zoom),(int)((y-UniverseSystem.viewportY-height/2)*zoom));
				glTexCoord2f(tx+twidth,0);
				glVertex2i((int)(((x-UniverseSystem.viewportX)+(width/2))*zoom), (int)((y-UniverseSystem.viewportY-height/2)*zoom));
				glTexCoord2f(tx+twidth,0.125f);
				glVertex2i((int)((x-UniverseSystem.viewportX+width/2)*zoom), (int)((y-UniverseSystem.viewportY+height/2)*zoom));
				glTexCoord2f(tx,0.125f);
				glVertex2i((int)((x-UniverseSystem.viewportX-width/2)*zoom), (int)((y-UniverseSystem.viewportY+height/2)*zoom));
			glEnd();
			
			if (isSelected){
				glDisable(GL_TEXTURE_2D); 
				glDisable(GL_BLEND);
				glColor4f(0.0f,1.0f,0.0f,1.0f); //line color
				glBegin(GL_LINES);
				glVertex2i((int)x, (int)y); // origin of the line
				glVertex2i((int)x,(int)y-100); // ending point of the line
				glEnd( );

			}
```


----------



## Guest2 (13. Jan 2012)

Moin,

OpenGL verhält sich wie eine Zustandsmaschine, das heißt, wenn Du irgendwo einen Zustand setzt, bleibt dieser bestehen, bis das Du den Zustand neu setzt. Wenn Du also in Zeile 19 die Farbe auf Grün setzt, dann gilt das auch immer noch im nächsten frame und insbesondere auch in den Zeilen 5 - 14.

Ein weiter Punkt ist, dass die Farbe eines Bildpunktes unter anderem aus der Texturfarbe und der Farbe der zugehörigen Fläche berechnet wird. Wenn Du Dein Programm startest, ist die Fläche weiß, so das Dir das nicht auffällt. Sobald das grün aber aktiv wird, wird die Textur auch vom grün beeinflusst. Dieses Verhalten kann man mit [c]glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)[/c] an geeigneter Stelle ausschalten.

Warum die Linie nicht gezeichnet wird, wird mir aus dem obrigen code Segment nicht klar.

Viele Grüße,
Fancy


----------



## Anton2k (16. Jan 2012)

Hallo, ich hab meinen Code mal etwas gesäubert und mit den Zuständen gespielt. War ein reines Ablaufproblem was ich drin hatte. Ich hatte nur einmal die Farbe gesetzt da ich davon ausging beim nächsten Durchlauf wäre sie wieder auf Standard. 
Danke für den Stoß in die richtige Richtung.


----------

