Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 25.04.2006, 13:23 Titel: |
|
|
ja, also ich habe jetzt mal eine XRGB Textur erstellet, damit funktioniert GDI jetzt auch. Dann hab ich die Textur in eine neue Textur kopiert, nur mein Problem ist jetz tleider, das GDI das X wohl immer auf 0 setzt.
Eine Mögliche Lösung sehe ich darin, das ich beim kopieren jeden Pixel teste, ob er in der Textfarbe ist und wenn nein ihn transparent mache.
Allersigns ist das ja shcon ein kleiner kopieraufwand, immerhin können da mal ganze Mengen an Pixel zusammen kommen. Ich dneke ich werde das mal testweise machen, um zu sehen wie es von der Performance ist. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 25.04.2006, 16:25 Titel: |
|
|
XRGB meint das kein A gebraucht wird, sonst könntest du auch ARGB nehmen, irgendwie logisch oder?
Was allerdings komisch ist... warum ist bei dir X=0? sollte X nicht max sein? also 1.0 oder 255? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 25.04.2006, 18:09 Titel: |
|
|
nien, scheinbar sind die Texturen von anfang an mit 0 initialisiert. Und warum GDI in X bzw. darein was später A ist 0 schreibt weiß ich leider nciht. Tatsache ist jedoch das 1 mir auch nicht weiterhelfen würde, da ich ja Text mit Transparenten Hintergurnd wünsche. Und wenn GDI den Text auf 1 und den Hintergrund auf 0 setzen könnte, würden wohl auch A-Texturen unterstützt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 25.04.2006, 18:40 Titel: |
|
|
Wenn du XRGB nimmst hast du kein Alpha-kanal sondern einen leern(unbenutzten) Kanal. _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 25.04.2006, 19:12 Titel: |
|
|
ja, ich weiß, aber man kann ja GDI net auf eine Texture mit A anwenden deswegen nehme ich das X und kopiers dann in eine Textur mit A. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
51m0n JLI'ler

Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 25.04.2006, 19:24 Titel: |
|
|
hm..und die End-Textur bleibt leer?
Schlägt vieleicht die Methode StrechRect fehl? (oder womit zeichnest du den Inhalt auf die andere Textur?)
Wenn sich der Text zur laufzeit gar nicht, oder nur wehr wenig ändert kannst du ihn ja auch beim laden Pixel für Pixel kopieren. _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 25.04.2006, 19:30 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | ja, ich weiß, aber man kann ja GDI net auf eine Texture mit A anwenden deswegen nehme ich das X und kopiers dann in eine Textur mit A. |
wtf?
GDI+: XRGB
DX: ARGB
GDI+ -> DX:
RGB = RGB
A = X <- wie soll das Sinn machen? X wird überhaupt nicht benutzt Oo _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
51m0n JLI'ler

Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 25.04.2006, 19:35 Titel: |
|
|
Fallen hat Folgendes geschrieben: | Jonathan_Klein hat Folgendes geschrieben: | ja, ich weiß, aber man kann ja GDI net auf eine Texture mit A anwenden deswegen nehme ich das X und kopiers dann in eine Textur mit A. |
wtf?
GDI+: XRGB
DX: ARGB
GDI+ -> DX:
RGB = RGB
A = X <- wie soll das Sinn machen? X wird überhaupt nicht benutzt Oo |
Ich denke er meint mit X das Surface ohne Alpha _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 25.04.2006, 19:48 Titel: |
|
|
Da würde mich mal spontan interessieren wie er das macht. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
fast hawk Senior JLI'ler

Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 25.04.2006, 19:51 Titel: |
|
|
Fallen hat Folgendes geschrieben: | Jonathan_Klein hat Folgendes geschrieben: | ja, ich weiß, aber man kann ja GDI net auf eine Texture mit A anwenden deswegen nehme ich das X und kopiers dann in eine Textur mit A. |
wtf?
GDI+: XRGB
DX: ARGB
GDI+ -> DX:
RGB = RGB
A = X <- wie soll das Sinn machen? X wird überhaupt nicht benutzt Oo |
X ist unbenutz. Soweit sind wir ja noch einig.So benutzt er X den unbenutzen Buffer weil er A speichern WILL ABER GDI kein A unterstüzt so nimmet er da X und macht es dann zu A.
So würd ich das interpretieren _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 25.04.2006, 19:55 Titel: |
|
|
CPP: | //eine Textur erstellen, mit transparenz füllen und den text drauf schreiben
m_lpDevice->CreateTexture(XSize, YSize, 1,//kein mipmapping
0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &m_lpTexture, NULL);
{
D3DLOCKED_RECT LocketRect;
m_lpTexture->LockRect(0, &LocketRect, NULL, D3DLOCK_DISCARD);
ARGBPixel Pixel;
Pixel.A=128;
Pixel.B=0;
Pixel.G=0;
Pixel.R=255;
for(int i=0; i<m_XSize*m_YSize; ++i)
{
reinterpret_cast<ARGBPixel*>(LocketRect.pBits)[i]=Pixel;
}
m_lpTexture->UnlockRect(0);
}
LPDIRECT3DSURFACE9 Surface;
m_lpTexture->GetSurfaceLevel(0, &Surface);
HDC hDC;
Surface->GetDC(&hDC);
TextOut(hDC, 0, 0, Text.c_str(), Text.length());
Surface->ReleaseDC(hDC);
Surface->Release();
//die textur auf eine texutr mit alphachannel kopieren:
{
LPDIRECT3DTEXTURE9 newTexture;
m_lpDevice->CreateTexture(XSize, YSize, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &newTexture, NULL);
D3DLOCKED_RECT LocketRect1, LocketRect2;
m_lpTexture->LockRect(0, &LocketRect1, NULL, D3DLOCK_DISCARD);
newTexture->LockRect(0, &LocketRect2, NULL, D3DLOCK_DISCARD);
memcpy(LocketRect2.pBits, LocketRect1.pBits, XSize*YSize*sizeof(ARGBPixel));
m_lpTexture->UnlockRect(0);
newTexture->UnlockRect(0);
m_lpTexture->Release();
m_lpTexture=newTexture;
}
|
Textur erstellen, butn füllen, Text drauf kopieren, neue Textur erstellen, alte Textur in neue kopieren, alte freigeben. Fertig.
Die Stelle die von GDI "bearbeitet" wurde ist am Ende transparent. Deshlab muss ich wohl biem rüberkopierne jeden Pixel chekcen und nach dem Colorkeyverfahren überlegen ob der Pixel transparent sein muss oder nicht. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
51m0n JLI'ler

Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 25.04.2006, 20:11 Titel: |
|
|
Nur mal so ne Frage wenn du dir n zeiger auf ein Surface mit m_lpTexture->GetSurfaceLevel(0, &Surface); holst und das Surface dann änderst ändert sich die textur doch nicht auch oder? _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 25.04.2006, 20:24 Titel: |
|
|
Du weist Alphawerte auf eine XRGB Format Surface zu, das kann nicht gehen da diese werte automatisch discarded werden AFAIK. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 25.04.2006, 20:48 Titel: |
|
|
51m0n hat Folgendes geschrieben: | Nur mal so ne Frage wenn du dir n zeiger auf ein Surface mit m_lpTexture->GetSurfaceLevel(0, &Surface); holst und das Surface dann änderst ändert sich die textur doch nicht auch oder? |
Doch die Textur besteht ja intern nur aus Surfaces (für jedes Miplevel eine). So sieht das jedenfalls für mich aus und ich finde das klingt plausibel^^
fallen hat Folgendes geschrieben: |
Du weist Alphawerte auf eine XRGB Format Surface zu, das kann nicht gehen da diese werte automatisch discarded werden AFAIK.
|
Doch es geht, die werden halt normalerweise ignoriert nicht aber wenn ich die in ne A-Texture kopiere, dann werden die vollkommen korrekt onterpretiert und ich hab meine transparente Textur. Jedenfalls da wo GDI net reingefuscht hat. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 25.04.2006, 20:58 Titel: |
|
|
Wo benutzt du eigentlich GDI+ ?
GDI kann AFAIK kein direktes Alpha schreiben, daher ist es eigentlich klar das du anstelle deines Textes alles weiss hast.
Wenn du alles auf Alpha 128 haben willst musst du wohl en Alphachannel danach nochmal explizit überschreiben.
Oder du findest eine Alternative, zB ein DX FontObjekt. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
|