xor verknüpfung in grafikbefehle

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

fliesenklaus

Betreff: xor verknüpfung in grafikbefehle

BeitragMo, Mai 07, 2007 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo auch
schreibe gern mit alten turbo 6.0, aber auch mit delphi und lazarus.
turbo geht nicht mehr richtig,weil die bgi treiber mit neuen karten
nicht mehr zurechtkommen.und für kleine sachen ist delphi zu aufwendig.
bin schon ein bisschen begeistert und habe mir eben blitz3d bestellt.
aber eines stört mich gewaltig :
habe bis jetzt keinen befehl gefunden,wo ich die point routinen
mit and oder xor verknüpfen kann,auch mit poke nicht.
mir ist sonst keine sprache bekannt,die das nicht kann.
oder gibt es einen verborgenen trick ?
für eine normale gummibandlinie ist das die einfachste geschichte.
ansonsten muss man immer wieder hin und her kopieren.
das ist bis jetzt eigentlich das einzigste,was ich zu meckern habe.
die geschwindigkeit und compilerzeit ist wirklich veblüffend.
da kommt sonst nur turbopascal ran unter dos.
grüsse an alle und die ich nicht kenne.

StepTiger

BeitragDi, Mai 08, 2007 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann erstmal ein herzliches Willkommen im Forum =)

Was genau meinst du denn mit Point Routinen?
Mir ist bisher kein Basic-Dialekt bekannt, der derartiges beinhaltet, oder ich komm einfach gerade nicht auf das, was du meinst Wink

Grüße, StepTiger.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

fliesenklaus

BeitragDi, Mai 08, 2007 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo
habe mich ein bisschen falsch ausgedrückt.
mit point meinte ich die einzelnen punkte (dot,point,plot,pixel).
wird in jeder sprache anders bezeichnet.
bevor der punkt in den speicher geschrieben wird,kann man normalerweise
eine verknüpfung mit logischen operatoren durchführen lassen.
der effekt ist, das der punkt mit der farbe ,die man im befehl angibt, nur
dann original ist ,wenn die farbe 0 ist. (schwarz).
existiert ein punkt mit einer andere farbe (nicht schwarz (0,0,0),wird mit
xor oder and der farbwert addiert und es entsteht eine andere farbe.
wenn man jetzt dasselbe nochmal macht (mit gleichen farbwert),dann
wird ursprungsfarbe wieder hergestellt.
man kann damit eine gummibandlinie erstellen.
wenn der curser über ein bild fährt braucht man den inhalt des bildes nicht
zwischenspeichern.
durch das zweimalige zeichnen (wenn der curser weiterbewegt wird)
mit xor wird das ursprüngliche bild wieder automatisch hergestellt.
das ging sogar beim alten c64. turbo pascal,delphi (canvas).
da es bei canvas geht,was ja auch directx benutzt,ist es auf jeden fall
möglich.
das hat mit der sprache nix zu tun. wenn ich direct mit mem in den speicher
schreibe geht das auch.
gruss klaus

BladeRunner

Moderator

BeitragDi, Mai 08, 2007 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst auch so nix zwischenspeichern- Blitzbasic arbeitet mit 2 Buffern und ermöglicht so ein Vorzeichnen. Auch werden die Images beim Einzeichnen nicht verändert, sondern in jeder Loop neu gezeichnet. Xor ist also unnötig, Du zeichnest dein image, dann per line oder Rect dein Band davor und das in jedem Durchlauf neu.

EDIT:
Code: [AUSKLAPPEN]
Graphics 640,480,32,2

SetBuffer BackBuffer()   ;Der nichtsichtbare Schirm wird bezeichnet

Repeat   ;Schleife
   Cls   ;Bild löschen
   
   Color 130,230,130    ;Farbe für die Box
   Rect 20,20, 200,250   ;die Box
   
   Color 255,255,255   ;Farbe für die linie
   Line 0,0,MouseX(),MouseY()   ; die linie
   
   Flip   ;stelle das Gezeichnete dar
Until KeyHit(1)   ;bis Esc. gedrückt wird


Als kleines Beispiel - dort wo die Box gezeichnet wird kann natürlich auch ein x-beliebiges Image stehen.
Mit Xor rumzufummeln wäre auf modernen 3D-Karten wesentlich langsamer als einfach das gesamte Bild neu blitten zu lassen. Da hat sich seit dem Cevi ein bissel was getan, wo man noch möglichst sparsam mit Neuzeichnereien umgehen musste.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

fliesenklaus

BeitragDi, Mai 08, 2007 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
das ging ja schnell,klasse.
also, ich habe ein bild im backbuffer. dann flip.
jetzt male ich mit line meine linie.
die puffer werden doch aber nur vertauscht. das hintere bild ist jetzt vorne. mit linie.
das jetzt hintere bild ist leer.das heisst doch,das
ich im hinteren bild alles ohne linie nochmal zeichnen muss. das war nach meinen ersten versuchen jedenfalls das ergebnis.
ich hab das jetzt erstmal so gelöst,das ich ,bevor die linie gezeichnet wird,
über grabimage zwischenspeichere.

ich muss jetzt auch mal zusehen,das ich die altlasten aus meinen kleinen
hirn kriege.wenn man schon mehrere sprachen halbwegs kann,ist das
sehr schwer nochmal wieder umzudenken.diese kleinigkeiten machen
ein dann fertig. also nix für ungut,wenn ich mal was dureinanderbringe.
gruss klaus

BladeRunner

Moderator

BeitragDi, Mai 08, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
s.o. im Edit:
Du malst alles auf den backbuffer, in der Richtigen Reihenfolge (Bild, dann Linie). dann flip.
Dann folgt schon der nächste Durchgang, auf neu gelöschtem buffer. Wenn sich irgendwelche Werte geändert haben, Werden die einfach übernommen, siehe mein Beispiel. Wenn etwas nicht mehr benötigt wird, zeichnet man es einfach nicht mehr.
Beispiel:
Code: [AUSKLAPPEN]
Graphics 640,480,32,2

SetBuffer BackBuffer()   ;Der nichtsichtbare Schirm wird bezeichnet

Repeat   ;Schleife
   Cls   ;Bild löschen
   
   key = GetKey()
      
   If key = 49 Then ;wenn 1 gedrückt wurde:
      drawit = 1- drawit ;schalte die linie an oder aus
   EndIf
    Color 130,230,130    ;Farbe für die Box
    Rect 20,20, 200,250   ;die Box
   
   If drawit = True Then ;wenn gezeichnet werden soll
       Color 255,255,255   ;Farbe für die linie
       Line 0,0,MouseX(),MouseY()   ; die linie
    EndIf
   Flip   ;stelle das Gezeichnete dar
Until KeyHit(1)   ;bis Esc gedrückt wird
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

fliesenklaus

BeitragDi, Mai 08, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
geht einwandfrei .
vielen danke erstmal.
ich hab blitz3d bestellt ,aber noch nicht bezahlt. kann man in
dem programm auch die gui einbinden ? oder geht das nur in blitzmax ?
ich hätte schon gern alle 3 arten zur verfügung ( 2d ,3d,gui).
kann dann ja noch bestellung ändern.
die frage noch und ich hör auf zu nerven.

BladeRunner

Moderator

BeitragDi, Mai 08, 2007 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nicht genervt.
Du kannst unter B3D eine eigene GUI einbinden, es gibt sicherlich so manchen Ansatz dazu. Ist halt ein Stückerl arbeit.
Unter B+ hast Du schon ein GUI mit dabei, allerdings fehlt da 3D. (Allerdings gibt es wohl auch da ein Mod für, wenn ich nicht irre)

Bmax ist 'erwachsener' als die andern beiden. Es gibt eine (bugbehaftete) GUI zum einbinden, (noch) kein 3D-Modul vom Hersteller, das ist in Arbeit. Es gibt allerdings inoffizielle 3d-Module dazu. BMax ist objekt-orientiert und plattformüergreifend.

Es ist schwer eine Empfehlung zu geben, ich mag Bmax am meisten, allerdings weiss ich nicht ob ich das vor 4 Jahren genau so gesagt hätte. Teste doch einfach die Demos auf www.blitzbasic.com
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

fliesenklaus

BeitragDi, Mai 08, 2007 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
na gut
dann hole ich mir erstmal 3d,denn das ist schon wichtig für mich.
die button und scrollbars muss ich dann halt selber bauen.
musste ich in turbopascal auch machen, dann hat man wenigstens ziele.
in basic mach ich das erste mal was,seit gestern abend.
meine geliebte turtle grafik ist schon fertig.
macht unwahrschlich spass,weil unkompliziert,gegenüber delphi.
gut .delphi oder lazarus ist mächtig im umfang und leistung,aber viel arbeit.
ein bisschen fehlt mir die objectorientierte geschichte,aber damit komm ich klar.
vielleicht hab deswegen die einfache geschichte von eben nicht gleich
kapiert,weil es so einfach ist.
gruss klaus

The_Nici

BeitragDi, Mai 08, 2007 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Devils-Child hat mal eine Gui geproggt. Devil-Engines GUI

Gibt auf der Seite ausserdem eine Physik-Engine, eine Shadow-Engine, für Dynamische Shadows und eine Partikel Engine für Partikel-Explosionen.
 

fliesenklaus

BeitragDi, Mai 08, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist es
danke für den tip. habe es gleich in blitz2d demo eigebunden. wird wieder
eine lange nacht.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group