Sprite gekachelt texturieren

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Hubsi

Betreff: Sprite gekachelt texturieren

BeitragMo, Feb 04, 2013 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Tag die Herren Very Happy

Ich habe ein Sprite welches nach Bedienervorgabe, die Größe weiß ich also nicht im Voraus, gestreckt wird (mittels ScaleSprite falls das von Bedeutung ist). Das Dingens wird dann mit einer Textur bepinselt. Mein Problem ist jetzt das die Textur ebenso gestreckt wird (was mir technisch ja auch logisch erscheint). Erreichen will ich aber das die Textur gekachelt wird. Gibts da eine Möglichkeit?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Feb 04, 2013 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es nicht ausprobiert, bin mir aber ziehmlich sicher, dass du ScaleTexture benutzen kannst um die Textur entsprechend zu skalieren. Also wenn du das Sprite zum Beispiel zweimal so groß machst, ScaleTexture(texture, 2, 2) hinterher.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

PhillipK

BeitragMo, Feb 04, 2013 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Gesetz dem fall das es klappt:
aMul, hast du das ganze nicht verdreht?

Je nachdem wie scale textur wirkt, muss es entweder "ScaleTextur texture, 1,1" sein oder Scale Texture Texture, 0.5,0.5 sein.

Heißt, wenns vom aktuellen scaling ausgeht, musst du 1.0 / SpriteScaleX und 1.0 / SpriteScaleY verwenden, alternativ (wenns globale skalierung der textur ist) immer den fixwert 1,1 nutzen.
ScaleTexture 2,2 würde bestenfalls die textur nochmal doppelt so groß darstellen oder aber das Scaling so beibehalten, wie es mit ScaleSprite passiert.

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Feb 04, 2013 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Da mir Spekulation mussfällt, eben mal getestet:
BlitzBasic: [AUSKLAPPEN]
Graphics3D(800, 600, 0, 2)

Local texture = CreateTexture(256, 256)

Local x, y

For x = 0 To 255
For y = 0 To 255
Local c = (((x - 128) * (x - 128) + (y - 128) * (y - 128)) / 20) Mod 256
c = $FF000000 Or (c Shl 16) Or (c Shl 8) Or c
WritePixel(x, y, c, TextureBuffer(texture))
Next
Next

Local sprite = CreateSprite()

PositionEntity(sprite, 0, 0, 2)

EntityTexture(sprite, texture)

Local camera = CreateCamera()


SetBuffer(BackBuffer())

While(Not KeyHit(1))

Local scale# = (MouseX() + 100) / 500.0

ScaleTexture(texture, scale, scale)

RenderWorld()
Text(0, 0, scale)
Flip(0)
Delay(10)
Wend

Zusammenfassung:
Ja, es klappt, und ja du hast recht, man muss mit der Inverse skalieren.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Hubsi

BeitragMo, Feb 04, 2013 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum in die Ferne schweifen wenn das Gute liegt so nah... Mr. Green Tausend Dank, damit kann ich experimentieren.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group