[B2D] Echtzeit Transparenz
Übersicht

![]() |
ToeBBetreff: [B2D] Echtzeit Transparenz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab mal ne Kleine FUnction geschrieben, die ein Bild direct mit Trasparenz einzeichnet. Dabei wird jeder Pixel im Bild ausgelesen und dann den darunterliegenden Pixel im DRAWBUFFER. Dann werden beide Pixel gemischt, gemalt und das wars ![]() Hier das Bild braucht ihr : Hier die Function : Parameter : IMG% ![]() XPOS% ![]() YPOS% ![]() DRWABUFFER% ![]() TRANS# ![]() Code: [AUSKLAPPEN] Function DrawTrans(IMG,XPOS,YPOS,DRAWBUFFER,TRANS#=1)
Local BUFFER = ImageBuffer(IMG) Local WIDTH = ImageWidth(IMG) Local HEIGHT = ImageHeight(IMG) Local PIX[2] Local R[2],G[2],B[2] If TRANS > 1 Then TRANS = 1 If TRANS < 0 Then TRANS = 0 TRANS = (TRANS/0.33)/10 If TRANS < 1 LockBuffer BUFFER LockBuffer DRAWBUFFER For XX = 0 To WIDTH For YY = 0 To HEIGHT PIX[1] = ReadPixelFast(XPOS+XX,YPOS+YY,DRAWBUFFER) PIX[2] = ReadPixelFast(XX,YY,BUFFER) For I = 1 To 2 R[I] = (PIX[I] And $FF0000) / $10000 G[I] = (PIX[I] And $FF00 ) / $100 B[I] = (PIX[I] And $FF ) Next R[0] = (R[0] + R[1] + R[2])*TRANS G[0] = (G[0] + G[1] + G[2])*TRANS B[0] = (B[0] + B[1] + B[2])*TRANS PIX[0] = 1*$1000000+R[0]*$10000+G[0]*$100+B[0] WritePixelFast(XPOS+XX,YPOS+YY,PIX[0],DRAWBUFFER) Next Next UnlockBuffer BUFFER UnlockBuffer DRAWBUFFER ElseIf TRANS = 1 DrawImage IMG,XPOS,YPOS EndIf End Function Hier Das Beispiel : Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Global FIRE = LoadImage("Fire.png"):MaskImage FIRE,1,2,3 Global FPS[2] Color 255,255,255 TR# = 0 Repeat If FPS[0] <= MilliSecs()-999 Then FPS[2] = FPS[1]:FPS[1] = 0:FPS[0] = MilliSecs() If KeyHit(57)Color Rand(255),Rand(255),Rand(255) Rect 50,50,100,100 If MouseDown(1) Then TR = TR + 0.01 If MouseDown(2) Then TR = TR - 0.01 If TR < 0 Then TR = 0 If TR > 1 Then TR = 1 DrawTrans(FIRE,MouseX()-50,MouseY()-50,FrontBuffer(),TR#) Text 1,1,"FPS:"+FPS[2] Text 1,20,"Transparenz : "+TR Flip Cls FPS[1] = FPS[1] + 1 Until KeyHit(1) End Man kann es leider aber noch nicht wirklich benutzen, da bei etwa 7-10 Trasparenten Bilderen die FPS in den Keller geht... Na Egal, sagt auf jeden fall mal was ihr davon haltet ^^ mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich halte den Ansatz nicht für Echtzeittauglich, aber für eher kleinere Sonderfälle durchaus brauchbar.
Ich würd sagen, du kannst dir jeweils eine Dimension in den R,G,B-Arrays sparen. [0] ist eig ohne Bedeutung. Und die Sache mit Trans funktioniert meiner Meinung nach so: R[1] = R[1] + R[2]*TRANS (Nicht getestet und gleich ohne dem nullten Element) mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay.
Wenn mann schon Blitz3D benutzt gibt es viel einfache Wege Echtzeittransparenz zu erzeugen. Zb indem mann sich ein Quad macht. (2 Triangles). Eine Alpha Textur drüber legt und fertig. Natürlich solte diese dann auch einen Alphakanal besitzen. zB png. Und nicht den TexturModus 2 vergessen. Das ist auf jedenfall Echtzeittauglicher als jeden Pixel dauernt neu zu berechnen. (Read/WritePixelFast) Für den 2D Bereich gibt es schon lange ein recht schnelle Lösung. https://www.blitzforum.de/foru...ransparenz Mfg Matthias. |
||
![]() |
PlasmaBetreff: hmm |
![]() Antworten mit Zitat ![]() |
---|---|---|
da muss doch irgendwo noch ne dll sein die irgendjemand geschrieben hat und die eigendlich ziemlich schnell
war ![]() such mal im forum |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group