Seite 1 von 3

3D Sprites sehen unter Win2K zerrissen aus :-( (gelöst)

Verfasst: 30.05.2006 13:08
von Kurzer
Hallo,

ich teste gerade die Anfänge meines Kartenspiels unter Win2K (entwickelt wird es unter Win98SE).
Jetzt sehe ich daß die 3D Sprites unter Win2K völlig auseinandergedehnt erscheinen.

Hier mal ein Bild vons janzen: Bildchen

Unter Win98Se sehen die 162 Karten, die testweise auf dem Screen verteilt sind, völlig korrekt aus.
Habt ihr eine Idee was das sein könnte?

Gruß Markus

PS: Win98SE = DirectX 9.irgendwas
Win2K = DirectX 7.0

Verfasst: 30.05.2006 13:10
von AND51
Ich habe nur die Vermutung, dass es etwas mit FlipBuffers() zu tun hat. Wenn ich keinen Parameter übergebe, ist alles ok, aber wenn ich einen Parameter übergebe (s. Hilfe dazu), dann sieht es genauso wie auf deinem Bild aus; ich nutze XP SP2.

Verfasst: 30.05.2006 13:14
von Kaeru Gaman
wenn dasn screen ist, wieso hast du dann nen fensterrahmen drumrum?

btw. wenn die vermutung von AND nich ins schwarze trifft, dann müsste man schon ein bisschen code sehen, um überhaupt raten zu können wo's dran liegt...

Verfasst: 30.05.2006 13:22
von Kurzer
Fensterrahmen, weil WindowedScreen.

Ich habe jetzt den gesamten Quellcode auch mal abgelegt: Hier die ZIP Datei mit den Sourcen und den BIldern (ca. 10KB gesamt)

Das ganze spielt sich in der Includedatei "SkipBo-Grafik.pb" ab.

Gruß Markus

Verfasst: 30.05.2006 13:29
von Kaeru Gaman
ich kann erst in 2 stunden reingucken, bin grad auf der arbeit... :roll:

das mit dem argument beim FlipBuffers() wär natürlich ne möglichkeit,
der windowedscreen verhält sich eben doch ein wenig anders als der fullscreen, z.b. die synchro geht vom desktop aus und nicht vom screen selber...

Verfasst: 30.05.2006 13:32
von Kurzer
AND51 hat geschrieben:Ich habe nur die Vermutung, dass es etwas mit FlipBuffers() zu tun hat. Wenn ich keinen Parameter übergebe, ist alles ok, aber wenn ich einen Parameter übergebe (s. Hilfe dazu), dann sieht es genauso wie auf deinem Bild aus; ich nutze XP SP2.
Schade... habe alle Parameter für FlipBuffers() ausprobiert (und auch ohne). Bringt leider nix.

Gruß Markus

Verfasst: 30.05.2006 13:51
von Jilocasin
Du benutzt doch "Sprite3D" oder?
Dabei wird doch Antialiasing nicht benutzt oder?
Vielleicht liegt's daran; kann man das in PB 4.0 ändern?

Verfasst: 30.05.2006 14:00
von Xaby
Versuch mal die Darstellung ohne Sprite3D.

Nur mal schauen, wie es da aussieht. Ist dein Windows98SE Rechner der selbe wie dein 2000 Rechner?

- Manche Sachen sind nicht ganz NT kompatibel.
- Deine Grafikkarte unterstützt das, was du vorhast so nicht

Versuch mal deine Sprites aus einem Vielfachen von 2 aufzubauen.
Das können nicht alle Grafikkarten. Ich weiß nur, dass bei günstigen Grafikkarten (weder ATI noch nVIDEA-Chip) an den Ecken von Bilder solche Sachen auftreten können. Vielleicht musst du auch den Speicher für deine Sprites vorher manuel allokieren.

Ich hatte ein ähnliches Problem mal mit einer SIS-Grafikkarte und einem 100 x 100 Sprite.

Sah komplett verschrumpelt aus. Aber kann man umgehen.
128 x 128 draus gemacht.

Aber ich muss gestehen, ich hab deinen Code nicht gelesen, und sicherlich hast du schon alles versucht.

:roll:

Verfasst: 30.05.2006 14:00
von Kaeru Gaman
> Dabei wird doch Antialiasing nicht benutzt oder?

das regelt Sprite3DQuality()

...aber das ist kein AA-problem, das sieht nach was anderem aus... :|


[edit]
da sagt Xaby was... genau...

bei einigen Grakas müssen die vorlagen für Sprite 3D quadratisch sein und ganze zweierpotenzen kantenlängen haben...

also, wenn du die karten in 256x256 malst, darstellen kannst du sie so rechteckig wie du lustig bist, aber die eigentliche texture muss 2^x*2^x sein...

Verfasst: 30.05.2006 14:08
von Kurzer
Xaby hat geschrieben:Versuch mal die Darstellung ohne Sprite3D.
Ohne 3D geht es.
Habe die selbe Karte einmal mit, einmal ohne 3D darstellen lassen.

Code: Alles auswählen

  DisplaySprite(11, WindowMouseX(#MainWindow), WindowMouseY(#MainWindow))
  DisplaySprite3D(11, WindowMouseX(#MainWindow)+ 100, WindowMouseY(#MainWindow), 255)
Xaby hat geschrieben:Nur mal schauen, wie es da aussieht. Ist dein Windows98SE Rechner der selbe wie dein 2000 Rechner?
Nein, sind verschiedene, ich weiß leider auch nicht was für eine Grafikkarte im 2K Rechner ist.
Xaby hat geschrieben:Versuch mal deine Sprites aus einem Vielfachen von 2 aufzubauen.
Das kann es nicht sein, die sind 96 x 128 pixel groß. Also ziemlich Computerfreundliche Werte ;-)
Xaby hat geschrieben:Aber ich muss gestehen, ich hab deinen Code nicht gelesen, und sicherlich hast du schon alles versucht.
Naja nicht wirklich. Aber als PB Anfänger wüsste ich jetzt auch nicht wo ich da ansetzen sollte. Daher mein Hilferuf.

Gruß Markus