Textur nach copyrect und mask flag(4) (Erledigt)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Silbersurfer

Betreff: Textur nach copyrect und mask flag(4) (Erledigt)

BeitragSa, Apr 23, 2011 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute habe ein problem mit meiner erstellten textur!
ich lade mir ein image ein welches ich mittels copyrect dann in den Texturbuffer schreibe,
soweit so gut....
das anzeigen ist kein problem solange ich kein alpha (2) oder mask (4) flag setze,
dann ist der inhalt aufeinmal ganz weg (transparent)

eigentlich sollten doch nur die schwarzen anteile verschwinden und alpha aktiviert werden oder liege ich da falsch ?
Edit zur besseren verständnis diese bild zum beispiel..
user posted image
bei diesen bild würde ich es als textur laden, und mask flag setzen.
Dann würde alles was schwarz ist transparent
sobald ich es aber als image lade dann kopiere ist komplett transparent warum das hat da keiner eine Idee ??????

hier mein code dazu
BlitzBasic: [AUSKLAPPEN]
Function Is_create_fontSurface(mesh,image$,fxflag=1,tflag=1)
Local wert=1
image=LoadImage (image$)
iw=ImageWidth (image) : ih=ImageHeight (image)
;errechnet texturweite
For tex_w=0 To 10
If iw<=wert tw=wert Exit
wert=wert Shl 1
Next
wert=1
;errechnet texturhöhe
For tex_w=0 To 10
If ih<=wert th=wert Exit
wert=wert Shl 1
Next
;erstellt eine Textur mit flags
tex=CreateTexture (tw,th,tflag)
;copiert das Image in die textur
CopyRect 0,0,iw,ih,0,0 ,ImageBuffer(image),TextureBuffer(tex)
;setzt surface und die FX flags
surface=CreateSurface(mesh)
Brush=CreateBrush ()
BrushFX brush,fxflag
BrushTexture brush,tex
PaintSurface surface,brush
FreeBrush brush
Return surface
End Function
  • Zuletzt bearbeitet von Silbersurfer am Mi, Apr 27, 2011 12:47, insgesamt einmal bearbeitet

aMul

Sieger des Minimalist Compo 01/13

BeitragSa, Apr 23, 2011 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
LoadImage läd keine Transparenz.
Da musst du entweder eine eigene LoadImage Funktion schreiben, oder die Pixel einzeln mit Read-/WritePixel kopieren, und dabei einen entsprechenden Alpha-Wert setzen.
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
 

PacMani

BeitragSa, Apr 23, 2011 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man nicht aus einem Texturenbuffer in einen Texturenbuffer laden? Dann wär's doch das, was gesucht ist.
Und die Textur lädt man richtig mit den Flags 1+2, s. LoadTexture
 

Silbersurfer

BeitragSa, Apr 23, 2011 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Pac-Man ja das schon, aber in meinen fall nicht.
Denn ich möchte Bilder die nicht textur größen haben z.B. (2.4.6.8.32.64) usw. unverzerrt in eine neu erstellte
textur kopieren..

drum ist auch ärgerlich das blitz3d das nicht bei Image befehlen unterstützt was aMul auch schon
sagte..

ich habe da jetzt mal die freeimage.dll mir deshalb angeschaut, und hoffe das ich es damit hin bekomme

nur wie gesagt ist es natürlich echt dumm das zwar alpha in texturen funtz und dabei die image befehle völlig
außen vorgelassen wurden...

zumindestens was dem Laden angeht den copyreckt,writepixel,readpixel können das ja....
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

PacMani

BeitragSa, Apr 23, 2011 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Clippe die Bilder doch und mach sie größer?
 

Silbersurfer

BeitragSa, Apr 23, 2011 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Pac-Man wie meinst du das jetzt ?? clippen
wenn ich z.B. einen bitmap font lade der eine bildgröße von 300*96 hat.
dann wird der von texturload auf 512*128 hochscaliert was nicht sin und zweck ist.
denn das macht das graben unbrauchbar...

Weshalb ich auf den gedanken kam diese normal zu laden, und dann in eine Textur zu kopieren..
Was ja auch geht, bis auf das dann alle alpha werte nicht mehr anwedbar sind
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

PacMani

BeitragSa, Apr 23, 2011 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
dann bearbeite die textur in einem bildbearbeitungsprogramm und füge leeren platz rechts und unten ein.
 

Silbersurfer

BeitragSa, Apr 23, 2011 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist es, was ich zur Zeit ja auch mache Pac-Man nur ne schöne lösung ist das
natürlich nicht...

Würde viel lieber ne andere möglichkeit finden, und danke für deine mühe mir da weiter zu helfen
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Mr.Keks

BeitragDi, Apr 26, 2011 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, es ist ziemlich blöd, dass man nicht Alpha und Unverzerrtes auf einmal haben kann. Wenns jedoch nur um Masking geht, hilft dir vielleicht folgendes weiter: So ersetzt man Pixel einer bestimmten Farbe (im Beispiel das Pink 248,0,248) durch transparente Pixel, Code: [AUSKLAPPEN]
For x = 0 To width -1
   For y = 0 To height-1
      If ReadPixelFast(x,y,TextureBuffer(tex))= $FFF800F8 Then
         WritePixelFast x,y,0, TextureBuffer(tex)
      EndIf
   Next
Next
MrKeks.net
 

Silbersurfer

BeitragMi, Apr 27, 2011 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
danke erstmal Mr.Keks, aber so geht es nicht, da die werte nicht koreckt in den Texturbuffer geschrieben werden.
Ich weiß nicht warum z.b color 0,0,0 im texturbuffer kein wirkliches rgb $000000 ist,zumindestens bei activem alpha nicht
auch als ich die RGB werte in RGB+Alpha umgewandelt habe war RGB $000000 nicht transparent obwohl es eigent lich so sein sollte.

Nu habe ich das ganze etwas abgeändert und es klappt jetzt endlich... Very Happy
anstatt den RGB wert zu überprüfen, habe ich die aufgesplitteten R,G,B werte auf maskfarbe überprüft und siehe da es geht....

hier noch der code dazu für alle die es Interessiert Smile

gruß Silbersurfer

BlitzBasic: [AUSKLAPPEN]
	;erstellt eine Textur mit flags
tex=CreateTexture (tw,th,tflag)
LockBuffer (ImageBuffer(image))
LockBuffer (TextureBuffer(tex))
;füllen der Texture mit maskfarbe
For x = 0 To tw -1
For y = 0 To th-1
WritePixelFast x,y,0, TextureBuffer(tex)
Next
Next
;auslesen der RGB und umwandeln in RGB+Alpha werte
For x = 0 To iw -1
For y = 0 To ih-1
;RGB werte einlesen
rgb= ReadPixelFast (x,y,ImageBuffer(image))
;RGB werte umwandeln
a=(rgb And $FF000000)/$1000000
r=(rgb And $FF0000)/$10000
g=(rgb And $FF00)/$100
b=rgb And $FF
rgb=a*$1000000 + r*$10000 + g*$100 + b
If r=0 And g=0 And b=0
;maskfarbe schreiben
WritePixelFast x,y,0, TextureBuffer(tex)
Else
;neue Frarbwerte schreiben
WritePixelFast x,y,rgb, TextureBuffer(tex)
EndIf
Next
Next
UnlockBuffer (ImageBuffer(image))
UnlockBuffer (TextureBuffer(tex))
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Mr.Keks

BeitragMi, Apr 27, 2011 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, der von mir gepostete Code ist aus einem Projekt kopiert, in dem es so funktioniert Wink.
MrKeks.net
 

Silbersurfer

BeitragMi, Apr 27, 2011 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert auch, wenn es nur im Texturbuffer gemacht wird Mr.Keks
aber leider nicht wenn man von Imagebuffer es zum Texturbuffer macht.

egal mit dem code kann man aufjedenfall jetzt, vom Imagebuffer daten zum Texturbuffer mit alphaflag schreiben
die dann auch zu sehen sind Smile
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group