sdl - transparenz festgelegt dennoch nicht transparent

Programmieren in C++
Antworten
Autor
Nachricht
psyco001
8 Bit
Beiträge: 259
Registriert: Mo Nov 12, 2007 19:11
Wohnort: Berlin
Kontaktdaten:

sdl - transparenz festgelegt dennoch nicht transparent

#1 Beitrag von psyco001 » So Mai 17, 2009 22:51

hallo leute,

mal wieder ich...
mein aktuelles problem was ich zu lösen vermöge sieht folgend aus:
Ich setze alle pixel des framebuffers auf die farbe schwarz,
zeichne dann das gelände in den buffer und zeichne dann tiles mit transparents darüber.
Das problem:
Sobald ich die als transparent gesetzten tiles zeichne, sehe ich nurnoch schwarz, obwohl ich dort das gelände sehen sollte.
ich hoffe einer von euch kann mir bei diesem problem helfen, so dass die transparente fläche auch wirklich tansparent bleibt.
um nochmal genauer zu sein, das screen surface wird mit den transparentz daten gefüllt, obwohl dies nicht passieren soll.

psyco001
8 Bit
Beiträge: 259
Registriert: Mo Nov 12, 2007 19:11
Wohnort: Berlin
Kontaktdaten:

Re: sdl - transparenz festgelegt dennoch nicht transparent

#2 Beitrag von psyco001 » Mo Mai 18, 2009 07:49

so, das problem mit der transparents hat sich jetzt gelöst.
Das ist sozusagen ein folgefehler der durch folgendes herforgerufen wurde, wobei ich diesmal echt überhaupt nicht weis wie ich das lösen soll.
folgender code [edited]:

Code: Alles auswählen

bool isFirstElement = true;
	for( TiXmlElement* Layer = layers->FirstChildElement("layer"); Layer; Layer = Layer->NextSiblingElement("layer") )
	{
		this->m_MapLayerList.push_back( new CEngineMapLayer(this->m_Renderer, &this->MapSize));
		//this->m_MapIter = this->m_MapLayerList.end(); // Hier lag das Problem
		if(isFirstElement == true)
		{
			this->m_MapIter = this->m_MapLayerList.begin();
			isFirstElement = false;
		}
		else
			this->m_MapIter++;  //Hiermit hab ich das problem gelöst
		//printf(" debug xmlRead: %s\n",Layer->Attribute("tileset"));
		(*this->m_MapIter)->SetTileImage((char*)Layer->Attribute("tileset"));
		(*this->m_MapIter)->SetLayerType((E_LayerType) atoi(Layer->Attribute("type")));
		(*this->m_MapIter)->SetLayerData((char*)Layer->GetText());
		//(*this->m_MapIter)->SetColorKey((Uint32)atoi( Layer->Attribute("colorkey")));
	}
Das Problem ist, das ich vorher die Variable isFirstElement nicht auf true gesetzt habe und dadurch jedesmal die daten der einzelnen ebennen überschrieben wurden, nun habe ich nach der korrektur aber das problem das ich wenn ich this->m_MapLayerList.end() aufrufe ein falscher pointer zurück gegeben wird.
Woran könnte das liegen bzw. wie kann man dieses problem beheben?

edit: hab grad doch ne lösung gefunden die ich aber etwas dreckig finde.

Antworten

Zurück zu „C++“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast