Aktuelle Zeit: 05.12.2020 07:13

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ZoomSprite und SpriteWidth
BeitragVerfasst: 21.11.2020 18:17 
Offline

Registriert: 19.11.2020 17:08
Hallo!
Ich lerne gerade mit PureBasic zu programmieren und bin auf mein erstes Hindernis gestoßen.

Ich lade ein einfaches 2D-Sprite, dann passe ich mit ZoomSprite dessen Größe an.
Wenn ich zu späterer Zeit die Größe des Sprites wissen will, geben mir SpriteWidth und SpriteHeight nur die ursprüngliche Größe des Sprites an, nicht aber die gezoomte Größe.
Gibt es einen Befehl, um die aktuelle Größe zu erhalten?

Eine Lösung ist natürlich, einfach zu speichern, was man bei ZoomSprite für Maße verwendet hat, aber das kommt mir nicht sehr elegant vor.

Für Tippps und HInweise bin ich sehr dankbar :allright:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 21.11.2020 19:26 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo 4Planes,

deine Aussage:
4Planes hat geschrieben:
Wenn ich zu späterer Zeit die Größe des Sprites wissen will, geben mir SpriteWidth und SpriteHeight nur die ursprüngliche Größe des Sprites an, nicht aber die gezoomte Größe.


ist falsch.

SpriteWidth und SpriteHeight geben nach einem ZoomSprite - Aufruf auch die neue Spritegröße aus.
Das funktioniert unter Windows x86/x64 mit DirectX 11 oder OpenGL und unter Linux mit OpenGL, sowie unter MacOS mit OpenGL als Renderer.
Es wird überall gezoomt. Und der Befehl ist dabei so nett auch die neuen Texturdimensionen für eine spätere Verwendung (z.B. mit SpriteWidth oder SpriteHeight) zu speichern und nicht nur als reine Darstellungsfunktion zu dienen.


Vielleicht machst du einen Fehler beim Abfragen der Werte?
Beispielcode?

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 21.11.2020 21:59 
Offline

Registriert: 19.11.2020 17:08
Du hast Recht! Ich hätte das vorher prüfen sollen, bevor ich behaupte, wie SpriteWidth funktioniert. Ich war mir sicher, dass der Fehler hier liegt. Stattdessen verstehe ich den Fehler jetzt nicht. Wenn ich versuche auf ein gezoomtes Sprite zu schreiben, kommt eine Fehlermeldung, sobald ich den Bereich der Originalgröße verlasse.

Dieser Code funktioniert:
Code:
StartDrawing(SpriteOutput(varInt_SpriteID))
  For varInt_PositionY = 0 To SpriteHeight(varInt_SpriteID)-1
    For varInt_PositionX = 0 To SpriteWidth(varInt_SpriteID)-1
      Plot(varInt_PositionX, varInt_PositionY, $00FF00)
    Next
  Next
StopDrawing()


Dieser hier funktioniert nicht. Da heißt es »Plot() ist außerhalb des Zeichenbereichs«.
Code:
ZoomSprite(varInt_SpriteID, SpriteWidth(varInt_SpriteID) * 2, SpriteHeight(varInt_SpriteID) * 2)
StartDrawing(SpriteOutput(varInt_SpriteID))
  For varInt_PositionY = 0 To SpriteHeight(varInt_SpriteID)-1
    For varInt_PositionX = 0 To SpriteWidth(varInt_SpriteID)-1
      Plot(varInt_PositionX, varInt_PositionY, $00FF00)
    Next
  Next
StopDrawing()


Heißt das, wenn man gezoomte Sprites bearbeiten will, dann geht das nur in ihrer Originalgröße?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 21.11.2020 22:26 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
4Planes hat geschrieben:
...
Heißt das, wenn man gezoomte Sprites bearbeiten will, dann geht das nur in ihrer Originalgröße?

Ja, da sonst außerhalb des Sprite-Speichers geschrieben wird.

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 22.11.2020 09:00 
Offline

Registriert: 19.11.2020 17:08
Vielen Dank für die Aufklärung! Das erklärt, warum mein Code manchmal nicht funktioniert.

Damit stellt sich sich mir jetzt aber die genau umgekehrte Frage vom Anfang: Gibt es eine elegante Möglichkeit, die ursprüngliche Größe eines gezoomten Sprites zu ermitteln, ohne den Wert irgendwo in einer Variable gespeichert zu haben?

Ich weiß, dass man ZoomSprite mit #PB_Default aufrufen kann, aber ich will ja eigentlich die Größe des Sprites beibehalten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 22.11.2020 12:02 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Ja diese Möglichkeit gibt es.

Benutze: OutputWidth() und OutputHeight()

Beispiel:

Code:
    StartDrawing(SpriteOutput(varInt_SpriteID))
    For varInt_PositionY = 0 To OutputHeight()-1
      For varInt_PositionX = 0 To OutputWidth()-1
        Plot(varInt_PositionX, varInt_PositionY, $00FF00)
      Next
    Next

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ZoomSprite und SpriteWidth
BeitragVerfasst: 22.11.2020 16:01 
Offline

Registriert: 19.11.2020 17:08
Vielen Dank für die Hilfe! Funktioniert jetzt tadellos!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye