Seite 1 von 1
Fehler in RotateSprite3D
Verfasst: 06.01.2010 23:15
von hth
RotateSprite3D funktioniert seit PB4.4 eigentlich einfach super.
Alle Einschränkungen (Spritgröße, quadratische Sprites, ..) scheinen Vergangenheit zu sein.
Danke an die Entwickler!
Leider gibt es wohl doch einen kleinen Bug.
Sobald der Winkel ungleich 0 Grad ist, wird als Spritehöhe die Breite verwendet, wodurch DisplaySprite3D
das Sprite vertikal falsch positioniert.
Den Korrekturvorschlag sehe ich nur als Notlösung
(Getestet unter Win2000 und mit 3 Windows-7 PCs)
Code: Alles auswählen
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
End
EndIf
If OpenScreen(640,480,32, "Sprite-Rotate")
sprw=600:sprh=440
CreateSprite(0,sprw,sprh,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(0))
Box(0,0,sprw,sprh,RGB(128,0,0))
StopDrawing()
CreateSprite3D(0, 0)
Repeat
If x<200 ;nach ca 2s wird der Winkel auf 1Grad geändert
x=x+1
Else
deg=1
EndIf
FlipBuffers()
ClearScreen(RGB(0,50,128))
If Start3D()
RotateSprite3D(0,deg,#PB_Absolute)
;If deg<>0:vkorr=(sprh-sprw)/2:EndIf ;mögliche Korrektur
DisplaySprite3D(0,20,20+vkorr)
Stop3D()
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End
Re: Fehler in RotateSprite3D
Verfasst: 09.01.2010 22:25
von Kurzer
Bestätigt unter XPSP3 32 Bit
Mit folgenden Änderungen im obigen Code wird das Problem deutlicher dargestellt:
wird zu
wird zu
Re: Fehler in RotateSprite3D
Verfasst: 09.01.2010 22:31
von STARGÅTE
naja den Fehler merkt man/andere garnicht, wenn sie eh immer nur Quadratische Sprites nehmen.
und da es ja langezeit nicht ging Rechteckige Sprites zu drehen oder gar als Winkel ein Float zu nehmen,
Mache ich jede Transformation immer noch mit TransformSprite3D() und spaare mir Zoom und Rotate und kan dabei gleich "standartisieren" das die Position immer die Mittel des Sprites ist nur nicht die linke obere Ecke,was beim drehen völlig ungeeinget ist.
Re: Fehler in RotateSprite3D
Verfasst: 09.01.2010 22:54
von Kaeru Gaman
die Einschränkungen betreffs des Format war nichts, was von PureBasic ausging, sondern immer ein Grafikkarten-Problem.
es ist also wesentlich wahrscheinlicher, dass deine Karte neu ist oder deine Treiber,
als dass es nur weil es jetzt 4.40 ist auf einmal auf jeder alten Karte funktioniert.
ich hab gehört, dass auf nicht ganz so alten Karten auch formate von 2^a x 2^b funktionieren, also z.b. 512x256 oder 1024x64,
aber beide Seiten sollten Zweierpotenzen sein.
das nur zur allgemeinen Information, das ändert ja nichts dran, dass die zuordnung welche seite welche ist korrekt sein muss.
Re: Fehler in RotateSprite3D
Verfasst: 10.01.2010 00:38
von hth
Nein es sind die gleichen Computer,
ich habe auch noch PB 4.3 drauf (und beim Test sofort das alte Verhalten).
Bilder, die nicht quadratisch sind werden verzerrt und im falschen Winkel gedreht.
Der Fehler mit den verwechselten Seiten ist allerdings nicht vorhanden.
Was auch die Ursache war (evtl. das alte DX), jetzt ist bis auf die "Verwechslung" alles OK,
nochmal Dank an das Entwicklerteam!
hth
Re: Fehler in RotateSprite3D
Verfasst: 22.01.2010 18:09
von mpz
Hallo Leute,
hier mal eine kleine Erklärung zu DX9. Alle Grafik in DX9 werden als Texturen gespeichert. Je nach Grafikkarte müssen die Texturen Quadratisch sein, ein Vielfaches von 2 haben und/oder müssen eine bestimmte Grösse haben. Ein kleines DX9 Testprogramm habe ich beigelegt was einem zeigt was die eigene Grafikkarte kann.
Hier in Purebasic hat man meiner Meinung nach aber keine "echten" Sprites verwendet sondern Rechteckflächen Meshs. Um die "Vielfach von 2 und Quadrat Problematik" zu umgehen werden die Texturen einfach verzerrt erzeugt und danach das Rechteck wieder verzerrt dargestellt. Das sieht dann so aus als wenn die Grafik in den proportionen wieder stimmt (ist aber nur einr Vermutung).
Das hier auftretende Problem ist aber einfach nur ein "kleiner Bug" der kein "DX Problem" ist...
Gruß Michael
Grafikkartentest
http://em.q-soft.ch/files/get/FrYlKAUrVw/grafiktest.exe
Code: Alles auswählen
;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP_Grafikartencheck
;// Dateiname: MP_Grafikkartencheck.pb
;// Erstellt am: 11.1.2010
;// Update am :
;// Author: Michael Paulwitz
;//
;// Info:
;// Informationen zur Grafikkarte werden ausgegeben
;// MP3D Lib
;//
;////////////////////////////////////////////////////////////////
;- ProgrammStart
MP_Graphics3DWindow(0, 0, 20, 20, "" , #PB_Window_Invisible) ;MP_Graphics3D (640,480,0,3) ; Erstelle ein WindowsFenster mit 3D Funktion #Window = 0
a.s = "Maximale Grösse der Textur in Pixel "+Str(MP_FeaturesOf(1)) + Chr(10)
If MP_FeaturesOf(2)
a + "Muss die Textur quadratisch sein: Ja " + Chr(10)
Else
a + "Muss die Textur quadratisch sein: Nein " + Chr(10)
EndIf
If MP_FeaturesOf(3)
a + "Muss die Textur eine Vielfältiges von 2 (1,2,4,8,...) haben: Ja " + Chr(10)
Else
a + "Muss die Textur eine Vielfältiges von 2 (1,2,4,8,...) haben: Nein " + Chr(10)
EndIf
If MP_FeaturesOf(3)
a + "Könnte es eine Ausnahme zu dem Vielfältiges von 2 geben: Ja " + Chr(10)
Else
a + "Könnte es eine Ausnahme zu dem Vielfältiges von 2 geben: Nein " + Chr(10)
EndIf
a + "Vertex Shaderversion: "+Hex(MP_VersionOf(2)) + Chr(10)
a + "Pixel Shaderversion: "+Hex(MP_VersionOf(3))
MessageRequester("Info über Grafikkarte", a)
Re: Fehler in RotateSprite3D
Verfasst: 07.05.2010 16:06
von hth
Der Bug ist auch noch in PB 4.50 Beta 4 enthalten.
Nochmal mein Vorschlag eine Einstufung von bug-Meldungen vorzunehmen
z.B.
- gemeldet
- untersucht, ist aber kein bug, sondern .....(kurze Erklärung)
- als bug registriert
- erledigt
hth
Re: Fehler in RotateSprite3D
Verfasst: 07.05.2010 16:10
von ts-soft
Die Frage ist ja nur, wurde der Bug im englischem Forum gemeldet?
Hier hat es nicht viel mehr als Unterhaltungswert

Re: Fehler in RotateSprite3D
Verfasst: 07.05.2010 16:16
von hth
OK,
wenn ihr es so einschätzt, dann eben noch mal im englischen Forum.
hth
Re: Fehler in RotateSprite3D
Verfasst: 07.05.2010 16:24
von ts-soft
lediglich eine Anwort im engl. Forum von Freak oder Fred haben hinsichtlich der Behebung, bzw.
ob es ein Bug ist, irgendeine Relevanz.
Hier können wir lediglich nochmals testen ob es wirklich ein Bug ist und dann evtl. einen
freiwilligen Suchen, der der englischen Sprache fähig ist.