Type-Fehler ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

AcidRain

Betreff: Type-Fehler ?

BeitragMi, Nov 14, 2007 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hehy,

ich machs kurz: Wink

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

mask=1

;Maske1 initialisieren
 Type pixel
    Field pixx,pixy,pixz
 End Type
 helldunkel1=LoadImage("breit.bmp")
 DrawImage helldunkel1,0,0
 Flip
  For i=0 To 799
    p.pixel=New pixel
    LockBuffer BackBuffer()
    rgb=ReadPixelFast(xp,yp)
    p\pixx=(rgb And $FF0000)/$10000
    p\pixy=(rgb And $FF00)/$100
    p\pixz=rgb And $FF
    UnlockBuffer BackBuffer()
    xp=xp+1
    If xp=799 Then yp=yp+1:xp=0
   If yp=599 Then
   EndIf
  Next
 FreeImage helldunkel1
 Cls
;Maske2 initialisieren
 Type pixel2
    Field pixx2,pixy2,pixz2
 End Type
 helldunkel2=LoadImage("hoch.bmp")
 DrawImage helldunkel2,0,0
 Flip
  For o=0 To 449
    q.pixel2=New pixel2
    LockBuffer BackBuffer()
    rgb2=ReadPixelFast(xp2,yp2)
    q\pixx2=(rgb2 And $FF0000)/$10000
    q\pixy2=(rgb2 And $FF00)/$100
    q\pixz2=rgb2 And $FF
    UnlockBuffer BackBuffer()
    xp2=xp2+1
    If xp2=799 Then yp2=yp2+1:xp2=0
   If yp2=599 Then
   EndIf
  Next
 FreeImage helldunkel2
 Cls
;Bilder laden+initialisieren
 image=LoadImage("1.jpg")
 Type pixel3
    Field pixx3,pixy3,pixz3
 End Type
    If ImageWidth(image)=800 Then
       DrawImage image,0,0
       Flip
       For u=0 To 799
       w.pixel3=New pixel3
       LockBuffer BackBuffer()
       rgb3=ReadPixelFast(xp,yp)
       w\pixx3=(rgb3 And $FF0000)/$10000
       w\pixy3=(rgb3 And $FF00)/$100
       w\pixz3=rgb3 And $FF
       UnlockBuffer BackBuffer()
       xp3=xp3+1
       If xp3=799 Then yp3=yp3+1:xp3=0
      If yp3=599 Then
      EndIf
        Next
       FreeImage image
       Cls
       mask=1
   Else
       DrawImage image,0,0
       Flip
        For u=0 To 449
       w.pixel3=New pixel3
       LockBuffer BackBuffer()
       rgb3=ReadPixelFast(xp3,yp3)
       w\pixx3=(rgb3 And $FF0000)/$10000
       w\pixy3=(rgb3 And $FF00)/$100
       w\pixz3=rgb3 And $FF
       UnlockBuffer BackBuffer()
       xp3=xp3+1
       If xp3=799 Then yp3=yp3+1:xp3=0
      If yp3=599 Then
      EndIf
        Next
       FreeImage image
       Cls
       mask=2
   EndIf
;"Ueberblendungseffekt" berechnen
 Type pixel4
    Field pixx4,pixy4,pixz4
 End Type
   p.pixel  = First pixel
   q.pixel2 = First pixel2
   w.pixel3 = First pixel3
   v.pixel4 = First pixel4
   
   
   If mask=1
      For h=0 To 479999
         v.pixel4=New pixel4
         v\pixx4=w\pixx3+p\pixx:If v\pixx4>255 Then v\pixx4=255
         v\pixy4=w\pixy3+p\pixy:If v\pixy4>255 Then v\pixy4=255
         v\pixz4=w\pixz3+p\pixz:If v\pixz4>255 Then v\pixz4=255
         w=After w
         p=After p
       Next
   EndIf


While Not KeyHit(1)










Wend
End


Fehler:"Object does not exist"

Das Problem tritt in dem "If mask=1 Then" Block auf-wenn ich die After-befehle lösche funktioniert es.
Ich will ein Programm schreiben,dass erst ein schwarzes bild mit weißer schrift in einem type feld speichert(rgb-werte) und mit diese daten dann zum hintergrundbild dazuaddiert,sodass ein "alphaeffekt" erzeugt wird.Der letzte Block sollte eigentlich dieses dazuaddieren erledigen..tja Very Happy
 

Dreamora

BeitragMi, Nov 14, 2007 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
das wird sowieso nicht funktionieren.

Du kannst nicht 500'000 Type Instanzen einfach ma so erzeugen. Das wird sehr langsam werden wegen dem "overhead"

Wenn du soviele Pixel speichern willst nimm besser einen Array (x,3) in diesem falle wobei x einfach die anzahl einträge sind
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

AcidRain

BeitragDo, Nov 15, 2007 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
mh...ich bin jetzt auf dim umgestiegen-das funktioniert-nur ist es extrem langsam-ich mache das bisher so:

1)farbwerte der "aufhellungsvorlage" in ein dim feld übertragen
2)farbwerte des bestimmten bildes in ein dim feld übertragen
3)farbwerte addieren
4)mit writepixelfast mit den berechnetenbildwerten pixel für pixel ein neues bild erstellen

gibt es eine möglichkeint,dies zu beschleunigen??

Ich hab das ganze sogar schon 3d mit sprites verucht,da gab es jedoch probleme mit der qualität(schrift"überblendete" zu stark bei hellem hintergrund,etwas unschärfer usw...)

so ist es mit der 3d variante:

user posted image

so soll es sein:

user posted image

hat jemand eventuel einen lösungsvorschlag für dieses problem ?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Nov 15, 2007 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Vorschlag:

Mache das ganze in 3D und beachte folgendes:

- verschiebe die Textur um 0.5 (0.5/Bildschirmbreite) nach links und oben oder die UV-Koordinaten um 0.5 Pixel nach rechts und unten. Dann müsste die Schärfe genau auf ein Pixel passen. Allerdings wirst du dann ein Rand mit einem Pixel dicke rechts und unten vermissen.

- Mache das ganze mit LoadTexture 2, EntityFX 1+2+8+16 und TextureBlend 2. Dann sollten die hellen Stellen behoben sein.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group