Aktuelle Zeit: 26.12.2024, 07:44

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 'getPixel' auf einer ITexture
BeitragVerfasst: 10.07.2007, 17:10 
Offline
Benutzeravatar

Registriert: 21.04.2007, 20:54
Beiträge: 117
Hallo,

weiß einer von euch wie ich die Farbe eines Pixels(X, Y) auf einer ITexture abfragen kann?
Ich kenn`nur die Funktion IImage::getPixel, wie könnte ich die denn für die ITexture nutzen?

_________________
Meine Homepage: http://www.hlc-games.de/
Mein Projekt: http://softpixelengine.sourceforge.net/
Mein Forum: http://www.hlc-games.de/forum/


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 10.07.2007, 19:21 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Du kannst per ITexture->lock() die Texturdaten abfragen, du musst dich allerdings um Konvertierung/Positionierung selber kümmern.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 10.07.2007, 21:12 
Offline
Benutzeravatar

Registriert: 21.04.2007, 20:54
Beiträge: 117
Wenn ich mich um Konvertierung und Positionierung selber kümmern muss, wie kann ich diese (Pixel(X, Y)) dann abfragen?
Doch nicht mit getPixel()?!

_________________
Meine Homepage: http://www.hlc-games.de/
Mein Projekt: http://softpixelengine.sourceforge.net/
Mein Forum: http://www.hlc-games.de/forum/


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 10.07.2007, 21:52 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
In etwa so:
Code:

void setTexturePixel(ITexture texture, void *data, int x, int y, SColor color)
{
ECOLOR_FORMAT format = texture->getColorFormat();
if (texture->getColorFormat() == ECF_A8R8G8B8)
{
unsigned int *data32 = data;
data32[x + y * texture->getSize().width] = color.color;
}
else if (texture->getColorFormat() == ECF_A1R5G5B5)
{
unsigned short *data16 = data;
data16[x + y * texture->getSize().width] = color.toA1R5G5B5();
}
//Hier die anderen Formate bearbeiten
else if (...)
{
}
}

[...]
//Im Programm:
void *texturedata = texture->lock()
//Hier mit den Texturdaten arbeiten
//zB:
setTexturePixel(texture, texturedata, 5, 5, SColor(255, 0, 255, 255));
texture->unlock();


Der Code wird so wahrscheinlich nicht funktionieren, ich habe ihn hier jetzt schnell hingetippt, versuch, ihn zu verstehen und getTexturePixel selber zu implementieren...

_________________
Meine Gameengine :)
Bild


Zuletzt geändert von thephoenix am 11.07.2007, 16:05, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 11.07.2007, 15:43 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
tsts... die beiden ifs sind gleich.. und es gibt eine unbenutzte variable ;)
es muss natürlich heißen:
Code:
ECOLOR_FORMAT format = texture->getColorFormat();
if (format == ECF_A8R8G8B8)
{ ... }
else if (format == ECF_A1R5G5B5)
{ ... }
//Hier die anderen Formate bearbeiten
else if (format == ...){ }


p.s.: es geht auch noch eleganter ;D mit einem switch-block:
Code:
switch(texture->getColorFormat())
{
case ECF_A8R8G8B8:
...
break;
case ECF_A1R5G5B5:
...
break;
case ...
}

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 11.07.2007, 16:06 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Habe die offensichtlichen Fehler mal korrigiert.
Da ich im Moment quasi nur Ansi-C programmiere und da Variablendeklarationen innerhalb von switch-Blöcken je nach Situation nicht möglich sind, bevorzuge ich in der Situation if-Abfragen...

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 11.07.2007, 18:01 
Offline
Benutzeravatar

Registriert: 21.04.2007, 20:54
Beiträge: 117
Tut mir leid dass ich das erst jetzt erwähne, war mir aber erst selbst nicht sicher wie ich`s am bessten machen kann, eigentlich will ich die Farbe eines Pixels direkt vom VideoDriver abtasten, aber wenn das nicht möglich ist geht`s auch von einer ITexture
:oops:

_________________
Meine Homepage: http://www.hlc-games.de/
Mein Projekt: http://softpixelengine.sourceforge.net/
Mein Forum: http://www.hlc-games.de/forum/


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 'getPixel' auf einer ITexture
BeitragVerfasst: 11.07.2007, 21:06 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Da müsstest du in eine Textur rendern, einen anderen Weg gibt es nicht.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de