JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=18926ba4eeafc4ae016f2ab108f87909Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit Spriteanzeige auf älterem PC

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Asto
JLI'ler


Alter: 36
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 10.06.2007, 23:49    Titel: Problem mit Spriteanzeige auf älterem PC Antworten mit Zitat

Ja schonwieder ich XD
Lerne halt grad fleissig Wink

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 38
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 00:21    Titel: Antworten mit Zitat

Wie sieht das Sprite denn im Original aus?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Asto
JLI'ler


Alter: 36
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 00:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 00:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 36
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 00:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 10:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 16:46    Titel: Antworten mit Zitat

"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 38
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 19:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Asto
JLI'ler


Alter: 36
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 19:43    Titel: Antworten mit Zitat

nunja ist der aktuelle treiber, aber ist halt ne onBoard-Graka, damit nicht unbedingt auf dem high-end stand von vor 3 Jahren Wink

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 Very Happy
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.06.2007, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Asto
JLI'ler


Alter: 36
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 11.06.2007, 21:08    Titel: Antworten mit Zitat

öhm Embarassed
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 Sad
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.06.2007, 22:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 12.06.2007, 13:21    Titel: Antworten mit Zitat

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? Wink
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum