HL² menus

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Horst der Biber

Betreff: HL² menus

BeitragSa, Apr 23, 2005 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
morgen!!!!!!!!!!!!

wollt für mein spiel die menus im stil von hl2 tun
und da hab ich ma in den ferien ne funktion geschrieben, womit man bilder halbtransparent auf den backbuffer malt. leider is die derbst lahm und an der untersten horizontalen linie vom bild entsteht so n komisches muster...

da! code!
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,1
SetBuffer(BackBuffer())
bg=LoadImage(\"C:/windows/web/wallpaper/karibiktraum.jpg\")
logo=LoadImage(\"gfx/xukiniwarelogo.png\")
DrawBlock bg,0,0
WaitKey
oldtime=MilliSecs()
drawimagetransparent(logo,272,172)
Print MilliSecs()-oldtime
Flip
WaitKey
End

Function drawimagetransparent(image,x,y)
imgbuffer=ImageBuffer(image)
bgbuffer=BackBuffer()
b=ImageWidth(image)
h=ImageHeight(image)
LockBuffer(imgbuffer)
LockBuffer(bgbuffer)
For nx=0 To b
For ny=0 To h
imagergb=ReadPixelFast(nx,ny,imgbuffer)
bgrgb=ReadPixelFast(nx+x,ny+y,bgbuffer)
bildrot=(imagergb And $FF0000)/$10000
bildgruen=(imagergb And $FF00)/$100
bildblau=imagergb And $FF
bgrot=(bgrgb And $FF0000)/$10000
bggruen=(bgrgb And $FF00)/$100
bgblau=bgrgb And $FF
WritePixelFast(nx+x,ny+y,$FF000000+((bildrot+bgrot)/2)*$10000+((bildgruen+bggruen)/2)*$100+(bildblau+bgblau)/2,bgbuffer)
Next
Next
UnlockBuffer(imgbuffer)
UnlockBuffer(bgbuffer)
End Function
 

Apocalyptic

Betreff: Re: HL² menus

BeitragSa, Apr 23, 2005 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Für bildschirmfüllende, halbtransparente Bilder sind die Pixelbefehle nicht wirklich geeignet, aber in B2D hat man sonst nicht viele (gut aussehende) Möglichkeiten... Wie auch immer, du solltest deine For-Schleife leicht abändern:

BlitzBasic: [AUSKLAPPEN]
For nx=0 To b-1
For ny=0 To h-1


Daher dürfte das komische Muster kommen, du liest nämlich jeweils horizontal und vertikal eine Zeile zuviel aus.
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Horst der Biber

BeitragSa, Apr 23, 2005 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
mkey
danke^^

nur die geschwindigkeit is jetzt noch n problem... -.-

Lunatix

BeitragSa, Apr 23, 2005 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs mit nem Paint - Brush (weiß) drüber zu gehen(über das bild)
sodass nur die hälfte vom bild bleibt und dann mit maskimage weiss wegmachen?kommt das nit au transparent?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Horst der Biber

BeitragSo, Apr 24, 2005 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
soo des mit der geschwindigkeit hab ich jetzt geloest...

wenn man das fenster verschiebt wird das fenster ohne transparent gezeichnet und wenn man es dropt halt transparenz. bin da jetzt ersma mit zufrieden :)

junkprogger
dank für den vorschlag aber find ich nich so schön

.:BotC:. Pascal

BeitragSo, Apr 24, 2005 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kanns auch so ähnlich machen, wie Junkprogger geschrieben hat, aber doppelt.

Ein Bild, auf dem jeder 2. Pixel Schwarz ist (oder eben eine andere Farbe. Gibt ja Maskimage.) und ein zweites Bild, auf dem auch jeder 2. Pixel schwarz ist, nur eben um einen Pixel verschoben. (hoffe das ist einigermassen verständlich.)

Edit: Achja, die Bilder werden im Programm natürlich abwechselnd gezeichnet.

Hab das eben mal ausprobiert und es flimmert zwar manchmal ein bisschen, geht aber viel schneller, als diese Funktion und hat den Vorteil, dass z.B. Schwarz gar nicht dargestellt wird. So kann man trotzdem Bilder transparent machen, die nicht nur rechteckig sind.

Aber dann muss man eben jedes Bild, was transparent sein soll doppelt machen.
Repeat

Print "Uuuuh und das ist der Beweis, immer das selbe, alles dreht sich im Kreis."

Forever

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragMo, Apr 25, 2005 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@.:BotC:. Pascal:
und dann hat man den doppelten Speicherplatz. Also das ist nicht so gut.

.:BotC:. Pascal

BeitragMo, Apr 25, 2005 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja klar. Ich hab das halt nur mal spontan ausprobiert. Wenn ich Transparenz brauche, dann benutze ich Sprites, aber wenn es 2D sein muss, dann ist das schon ne Alternative.
Wenn die Bilder natürlich gross sind und man viele Bilder braucht, dann kann man ja auch im Programm zwei Bilder daraus erstellen lassen. (oder meinst du Arbeitsspiecher?)
Repeat

Print "Uuuuh und das ist der Beweis, immer das selbe, alles dreht sich im Kreis."

Forever

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragDo, Apr 28, 2005 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meine beide Speicher. Ich habs ausprobiert und bei mir flackerts net. Trotzdem verbraucht es speicher.

Jan_

Ehemaliger Admin

BeitragDo, Apr 28, 2005 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, 3D Quads!
between angels and insects

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group