Schnellere Verdunklungs-Alternative

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Sterbendes Lüftlein

Betreff: Schnellere Verdunklungs-Alternative

BeitragDi, Jun 21, 2011 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Der Eisvogel

BeitragDi, Jun 21, 2011 9:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest entweder auf Draw3D umsteigen, oder dir selbst kurz nen kleinen Wrapper schreiben und das ganze auf ein Surface legen, dann kannst du die Farbe in echtzeit verdunkeln.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Noobody

BeitragDi, Jun 21, 2011 10:01
Antworten mit Zitat
Benutzer-Profile anzeigen
- Zieh das LockBuffer/UnlockBuffer aus der Schleife raus. Mit LockBuffer wird zwar WritePixelFast um einiges schneller, aber das Sperren/Entsperren benötigt selber ein wenig Zeit, so dass es sich nur lohnt, wenn man viele Pixel aufs Mal zeichnen will. Wenn du also für jeden Pixel den Buffer sperrst und entsperrst, wird das ganze sehr langsam. Daher einfach einmal LockBuffer vor der Schleife aufrufen, alle Pixel bearbeiten und dann einmal UnlockBuffer nach der Schleife aufrufen.

- Benutze Bitshifts statt Divisionen/Multiplikationen. Beispiel: BlitzBasic: [AUSKLAPPEN]
;Aufspalten
Local A = (RGB Shr 24) And $FF
Local R = (RGB Shr 16) And $FF
Local G = (RGB Shr 8) And $FF
Local B = (RGB ) And $FF

;.... R G B bearbeiten .....


;Zusammensetzen
Local RGBN = (A Shl 24) Or (R Shl 16) Or (G Shl 8) Or B
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Sterbendes Lüftlein

BeitragDi, Jun 21, 2011 10:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

grafe

BeitragDi, Jun 21, 2011 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Totensturm,
einen kleinen Fehler hab ich gefunden...
BlitzBasic: [AUSKLAPPEN]
Repeat
BGDatei$ = NextFile$(BGOrdner)
If BGDatei$="" Then Exit
If FileType("Hintergrundbild\"+BGDatei) <> 2 Then ;<----------- Hier
BG_Bild = LoadImage("Hintergrundbild\"+BGDatei$)
EndIf
Forever


so sollte es aussehen:
BlitzBasic: [AUSKLAPPEN]
Repeat
BGDatei$ = NextFile$(BGOrdner)
If BGDatei$="" Then Exit
If FileType("Hintergrundbild\"+BGDatei) =1 Then ;<----------- Hier
BG_Bild = LoadImage("Hintergrundbild\"+BGDatei$)
EndIf
Forever


beachte das "FileType("Hintergrundbild\"+BGDatei) =1". Wenn es eine Datei ist wird es geladen.

Edit:
Zusätzlich sehe ich:
BlitzBasic: [AUSKLAPPEN]
For x = 0 To 1024
For y = 0 To 768


das sollte so sein:
BlitzBasic: [AUSKLAPPEN]
For x = 0 To 1023
For y = 0 To 767


das war wohl dein problem Wink

mfg Grafe
 

Sterbendes Lüftlein

BeitragDi, Jun 21, 2011 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

mpmxyz

BeitragDi, Jun 21, 2011 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie möchtest du das Bild verdunkeln?
Probiere einmal Multiplikationen anstelle von Subtraktionen:
BlitzBasic: [AUSKLAPPEN]
If R >= 60 And B >= 60 And G >= 60 Then
R = R - 60
G = G - 60
B = B - 60
EndIf

wird zu
BlitzBasic: [AUSKLAPPEN]
R=R*128/255
G=G*128/255
B=B*128/255

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Sterbendes Lüftlein

BeitragDi, Jun 21, 2011 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group