Fehler in RotateSprite3D

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
hth
Beiträge: 76
Registriert: 08.10.2004 22:47

Fehler in RotateSprite3D

Beitrag 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 
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Fehler in RotateSprite3D

Beitrag von Kurzer »

Bestätigt unter XPSP3 32 Bit

Mit folgenden Änderungen im obigen Code wird das Problem deutlicher dargestellt:

Code: Alles auswählen

sprw=600:sprh=440
wird zu

Code: Alles auswählen

sprw=300:sprh=10

Code: Alles auswählen

Else
           deg=1
EndIf 

wird zu

Code: Alles auswählen

Else
           deg+1
EndIf
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fehler in RotateSprite3D

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Fehler in RotateSprite3D

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
hth
Beiträge: 76
Registriert: 08.10.2004 22:47

Re: Fehler in RotateSprite3D

Beitrag 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
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: Fehler in RotateSprite3D

Beitrag 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)
Working on :lol: - LibSGD - MP3D Engine - 8)
hth
Beiträge: 76
Registriert: 08.10.2004 22:47

Re: Fehler in RotateSprite3D

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehler in RotateSprite3D

Beitrag von ts-soft »

Die Frage ist ja nur, wurde der Bug im englischem Forum gemeldet?
Hier hat es nicht viel mehr als Unterhaltungswert :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
hth
Beiträge: 76
Registriert: 08.10.2004 22:47

Re: Fehler in RotateSprite3D

Beitrag von hth »

OK,

wenn ihr es so einschätzt, dann eben noch mal im englischen Forum.

hth
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehler in RotateSprite3D

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten