Mit Sprite malen
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: Mit Sprite malen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es eine Möglichkeit mit einem Sprite oder anderem unter B3D auf dem Bildschirm zu malen wie beispielsweise mit DrawImage? Also das ein Sprite mehrmals auf dem Bildschirm zu sehen ist, ohne immer ein neuen Sprite erstellen zu müssen? Möchte nämlich Schriftzüge schreiben wie Level 01, Level 02 etc. dabei aber nicht auf Transparenz verzichten... | ||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi Hectic! ![]() Was würde denn dagegeben sprechen, mehrere Sprites (für jedes Zeichen einen) zu verwenden ?? Du könntest Dir eine 3D-Text Routine schreiben, die für einen String eine Anordnung von Sprites mit entsprechender Textur erstellt (diese am besten noch an einen Pivot heftet und den Pivot zurückgibt, damit Du den gesamten Text einfach positionieren und auch wieder löschen kannst!). Eine noch schönere Methode wäre eigentlich, Du würdest anstatt Sprites ein Mesh erstellen, in diesem Mesh ein Quad oder Tri für jeden Buchstaben anlegen mit entsprechenden UV-Koordinaten, so dass ein ganz bestimmter Buchstabe auf diesem Quad / Tri erscheint (Du würdest in diesem Fall dann auch nur eine grosse Textur für alle Buchstaben verwenden, anstatt eine Texur pro Buchstabe!). Als dritte Idee könnte ich mir vorstellen, Du erstellst eine Textur, schreibst in sie Deinen kompletten Text und gibst sie dann einem (entsprechend skalierten) Sprite oder Quad-Mesh zu. Zu Deiner Fragestellung würde mir eventuell noch die Idee kommen, Du positionierst Deinen Buchstaben-Sprite, renderst die 3D-Welt, positionierst ihn dann um für den nächsten Buchstaben, renderst die 3D-Welt (ohne den Hintergrund zu löschen immer! - und alle anderen 3D-Objekte sollten versteckt sein!) usw. Diese Methode würde Deinem Wunsch nahe kommen, einen Sprite ähnlich DrawImage zu verwenden. Ich kann mir aber nicht vorstellen, dass dies besonders schnell ist, und überhaupt würde ich Dir persönlich die zweite Methode empfehlen. So würde ich diese Aufgabe für mich versuchen zu lösen. ![]() Lieben Gruss, + Ava + |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Ava,.. ![]() Irgendwie habe ich eine Abneigung >200 Sprites zu erstellen, nur damit da ein bischen Text auf dem Bildschirm zu sehen ist, um es dann gleich wieder in die Tonne zu schmeissen... Hmmm... Mit fertig erstelltem text habe ich bereits beim Menü so gehandhabt. Der restliche Text sollte dynamisch sein, da es im Spiel auch einen Leveleditor gibt, wo die User dann eigene Levels laden können. Und diesen Text möchte ich dann beim Auswählen transparent haben, damit es mit dem übrigen Spieldesign passt... Das mit den UV-Koordinaten klingt schonmal garnicht schlecht. Dann müsste ich die Texteingabe auf max. ~8 Zeichen pro Dateiname begrenzen, da dann jedes Mesch feste Anzahl an Triangles haben wird. Allerdings währe dann auch die Zeichenbreite fest. Was bei Buchstaben wie f, i, j, l nicht so schön aussehen würde... Werde mal Dein letzten Vorschlag ausprobieren ![]() Da hab ich mir mit dem Leveleditor wieder mal was eingebrockt... Als ob es nicht schon schlimm genug sein wird den Usern die Funktionen beizubringen (da die Spielegrafik auf ein etwas eigenartigen Aufbau beruht) und das ganze auch noch Schick zu gestallten... Danke Dir für die Antwort. Hast mich auf jeden Fall weiter gebracht... ![]() |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Tz tz tz...
Du kannst doch aber auch ein Mesh direkt im Programm entsprechend Deiner Bedürfnisse erstellen, Du bist da doch nicht gebunden an ein festes 8-Letter-Mesh, dass Du Dir im voraus zurechtbastelst. Genauso kannst Du auch eine Textur direkt im Programm erstellen und sie mit einem Text versehen. Da hast Du zwei meiner Vorschläge sehr statisch aufgefasst, so wie sie von mir eigentlich nicht gedacht waren. ![]() ![]() |
||
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics3D X_Aufl,Y_Aufl,0,1
repeat UPDATEWorld ReenderWorld ; 2D-Befehle Flip Until keyhit(1) So in etwa? |
||
Programmers dont die. They gosub without return... |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Schnuff, ich will ja nicht auf Transparenz verzichten, damit es mit dem übrigem Gamedesign passt. Somit kommen dann 2D-Befehle nicht so gut...
@Ava, habe mal ein kleinen Geschwindigkeitstest gemacht. Der Geschwindigkeitsfaktor zwischen einzeln positionierten Sprites und einem mit mehrfachem RenderWorld beträgt bei mir etwa 1:100... Das ist, wie Du bereits sagtest, nicht grad besonders schnell. Da ich aber für die Levelauswahl nicht besonders viel Speed brauche und die Spritesanzahl nicht mehr als 200 betragen wird, kann man dies mal verkraften... Test:Code: [AUSKLAPPEN] Graphics3D 800,600,32,1
SetBuffer BackBuffer() ClsColor 56,56,80 camera=CreateCamera() PositionEntity camera,0,0,-400 CameraClsMode camera,0,1 light=CreateLight() RotateEntity light,60,0,0 sprite=CreateSprite() ScaleSprite sprite,10,10 EntityAlpha sprite,.1 xp#=0 yp#=0 wk#=0 While Not KeyHit(1) wk=wk+1 For q=0 To 199 xp=Sin(q*(Sin(q)+7)+wk)*q yp=Cos(q*(Cos(q)+7)+wk)*q PositionEntity sprite,xp,yp,0 RotateSprite sprite,wk*(100-q)/40 RenderWorld Next ms=MilliSecs() td=ms-tt tt=ms Text 0,0,td+"ms ~"+1000/td+"fps" Flip 0 Cls Wend End Danke nochmal für die Hilfe... www.bam-lee.de.vu |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group