|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 10.06.2007, 22:49 Titel: Problem mit Spriteanzeige auf älterem PC |
|
|
Ja schonwieder ich XD
Lerne halt grad fleissig
Nun ich habe ein Problem mit der anzeige von einem Sprite auf einem älteren PC.
Und zwar ist es ein Sprite, das ein Eingabefelddarstellen soll:
Mein PC ist ein halbes Jahr alt und es sieht richtig aus.
Auf einem ca. 2-3 Jahre alten PC mit onBoardgrafik sieht das ganze jedoch so aus:
Woran liegt das!?
Edit: Das Blaue ist vom Hintergrundsurface _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 10.06.2007, 23:21 Titel: |
|
|
Wie sieht das Sprite denn im Original aus? |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 10.06.2007, 23:37 Titel: |
|
|
ops jau, fehlen noch ein paar infos, denke ich XD
übermüdung ^^
Die Originaldatei:
und hier der code vom erzeugen bzw initialisieren des objektes:
CPP: | spTextFeld.Create(hWnd, Direct3D.GetDevice(), "", 0);
datei = Archiv.LoadFile("images/input_field.bmp", &size);
spTextFeld.AddTextureMem(datei, size);
spTextFeld.SetPosition(SCR_WIDTH/2, SCR_HEIGHT/2); |
->AddTextureMem
CPP: | void CSprite::AddTextureMem(void* lpFile, int lpFilesize)
{
D3DXIMAGE_INFO ImgInfo;
D3DXGetImageInfoFromFileInMemory(lpFile, lpFilesize, &ImgInfo);
m_Width = ImgInfo.Width;
m_Height = ImgInfo.Height;
m_vRotationCenter.x = m_Width / 2.0f;
m_vRotationCenter.y = m_Height / 2.0f;
LPDIRECT3DTEXTURE9 lpTexture;
D3DXCreateTextureFromFileInMemoryEx(m_lpDevice, lpFile, lpFilesize, ImgInfo.Width, ImgInfo.Height, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, 0, 0,
&lpTexture);
// Zeiger auf die Textur im Vector speichern
m_AnimationVec.push_back(lpTexture);
} |
EDIT: ouch, mir fällt grad auf: er vergrößert das sprite auf ca. 32x256 (ursprünglich 30x200px), kann das sein? nur wie kann ich das dann ändern!? _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 10.06.2007, 23:43 Titel: |
|
|
Wenn du von einem "älteren PC" sprichst, ist es ohne weitere Infos wohl am naheliegendsten, dass es sich um das alte Problem mit der Texturgröße handelt.
Versuch doch mal, (falls es nicht schon so ist, ) die Größen der Texturen auf eine 2-er Potenz zu bringen (2,4,8,16,32,...). Möglich könnte auch sein, dass die Grafikkarte keine Texturen unterstützt, die nicht quadratisch sind. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 10.06.2007, 23:46 Titel: |
|
|
das würde heissen, das ich eine 32x256px textur machen müsste, wo dann der "nichtgebrauchte rest" transparent ist, richtig?
Und ich dachte schon man müsse an sowas seit 5Jahren oder so nicht mehr denken o.O
oder kann man das der grafikkarte "beibringen"? ^^ _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.06.2007, 09:43 Titel: |
|
|
GreatFlo hat Folgendes geschrieben: | das würde heissen, das ich eine 32x256px textur machen müsste, wo dann der "nichtgebrauchte rest" transparent ist, richtig? |
Evtl. müsstest du sogar eine 256x256 Textur draus machen. Manche der älteren unterstützen wie gesagt auch nur quadratische Texturen.
Bei den neueren muss man darauf auch nicht mehr achten, aber ich habe so im Hinterkopf, dass man es trotzdem so machen sollte, weil die GraKa damit besser zurecht kommt o.ä.
Kommt natürlich drauf an, wie alt deine GraKa ist, aber kann gut sein, dass die das anders noch nicht unterstützt hat... _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.06.2007, 15:46 Titel: |
|
|
"Beibringen" kannste der das net. Ok, vielleicht wenn du einen neuen Treiber programmierst oder so, aber wenn die GraKa das net von Haus aus unterstützt, haste kaum Chancen.
Eine Lösung wäre es noch, das Bild in mehrere kleine aufzuteilen. Wenn die GraKa nur quadratische und Zweierpotenzen kann, könntest du mehrere 32x32 Sprites nebeneinander legen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 11.06.2007, 18:35 Titel: |
|
|
Versuch mal auf dem 2-3 Jahre alten PC die aktuellesten Grafikkartentreiber zu installileren und guck ob es dann immernoch nicht geht.
In viele kleine Texturen aufteilen würde ich von abraten, weil dass den Ladevorgang verlängern kann und mehr Arbeitsspecher dadurch belegt wird und das Programm durch die Textureswitches sogar langsamer ist. |
|
Nach oben |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 11.06.2007, 18:43 Titel: |
|
|
nunja ist der aktuelle treiber, aber ist halt ne onBoard-Graka, damit nicht unbedingt auf dem high-end stand von vor 3 Jahren
Ich habe es einfach so gelöst, dass ich das Sprite auf 32x256px "vergrößere", aber das was ich nicht brauche, ist transparent.
Nun muss ich nur beim positionieren etwas umdenken _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.06.2007, 19:47 Titel: |
|
|
CPP: | D3DXCreateTextureFromFileInMemoryEx |
Damit kannste doch auch angeben das die Textur automatisch zu POT gemacht wird, hast du das mal probiert? Einfach mal dier Doku durchwühlen sollte es bringen. _________________ "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 |
|
|
Asto JLI'ler
Alter: 37 Anmeldedatum: 30.05.2007 Beiträge: 114 Wohnort: Dortmund Medaillen: Keine
|
Verfasst am: 11.06.2007, 20:08 Titel: |
|
|
öhm
POT == ?
meinst du n anderen filter oder n anderes format!?
oder meinst den ColorKey? Da wäre ja das problem, das nicht alles schwarze unsichtbar sein soll, denn den schwarzen rahmen möchte ich ja behalten.
hmm goolge konnte mir bei POT genauso wenig wie MSDN helfen
ok jetzt weiss ich das es in pp template format is oder sowas o.O
aber ich bezweifle mal das du das meinst :X _________________ "A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.06.2007, 21:40 Titel: |
|
|
POT=power of 2
also quadratische Auflösungen. _________________ "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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 12.06.2007, 12:21 Titel: |
|
|
Fallen hat Folgendes geschrieben: | POT=power of 2
also quadratische Auflösungen. |
Wohl eher, dass Breite und Höhe 2-er Potenzen sein müssen, oder?
Quadratisch müssen die Texturen deswegen noch nicht sein. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|