Ein paar Fragen zu GLBasic und dem Gp2x

Coden in GLBasic
Autor
Nachricht
Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#16 Beitrag von Schnatterplatsch » Mi Apr 08, 2009 10:55

werds auf jeden fall mal probieren, danke. komisch, das es an GRABSPRITE liegt hätte ich nicht gedacht. eher rotosprite, aber egal wir werden sehen.

gruß

EDIT:Klappt nicht. scheint also DOCH an Rotosprite zu liegen. Hab ich ne Blockade oder ist es wirklich nict möglich die rot, grün und blau werte einzeln zu bekommen????

Benutzeravatar
Steinbock
4 Bit
Beiträge: 23
Registriert: Fr Sep 12, 2008 09:27

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#17 Beitrag von Steinbock » Mi Apr 08, 2009 11:08

Ansonsten hier eine Beispielfunktion:

Code: Alles auswählen

FUNCTION ConvertPixel: x%,y%,r%,g%,b%

LOCAL col%,rr%,gg%,bb%

        col=GETPIXEL(x,y)
        rr=bAND(col,0xFF0000)
        gg=bAND(col,0x00FF00)
        bb=bAND(col,0x0000FF)
        
        rr=INTEGER(rr/65536)
        gg=INTEGER(gg/256)
        bb=INTEGER(bb/1)

        rr=bAND(rr,r-1)
        gg=bAND(gg,g-1)
        bb=bAND(bb,b-1)

        SETPIXEL x,y,rr*65536+gg*256+bb

ENDFUNCTION
Dabei ist x,y die position des Pixels und r,g,b der Annäherungswert pro Farbwert. Mögliche Werte sind 2,4,8,16.
Versuch's einfach mal.

Benutzeravatar
GernotFrisch
7 Bit
Beiträge: 230
Registriert: Di Aug 28, 2007 11:53
Wohnort: neben dem ED ;)
Kontaktdaten:

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#18 Beitrag von GernotFrisch » Do Apr 09, 2009 08:01

Poste das mal im GLBasic Forum. Das muss schon gehen. Ich hab das bei WIZSticks auch so gemacht (sogar in Echtzeit auf dem WIZ).
GLBasic
Basic for gamers

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#19 Beitrag von Schnatterplatsch » Do Apr 09, 2009 09:11

Ansonsten hier eine Beispielfunktion:
Erschieß mich bitte nicht aber entweder es funktioniert net, oder ich mach was flasch. Wenn ich jetzt einen Pixel auf seine "Nähe" zu transparenz überprüfen lassen will muss ich folgendes eingeben oder???
ConvertPixel x,y,255,0,128
r,g,b der Annäherungswert pro Farbwert. Mögliche Werte sind 2,4,8,16.
Das versteh ich überhaupt nicht.


Was ich jetzt, glaub ich, aber begriffen habe ist: col (definiert durch "=getpixel(x,y)") ist ja ein zahlenwert. irgendwie muss man doch aus diesem zahlenwert die einzelnen werte auslesen können oder. wäre ja nur logisch. hab folgendes probiert:

eine farbige fläche(aus bmp datei) mit (209,115,101), also in hexadezimal "d1,73,65" und in dezimal "13726565"(die hexadezimalzahl d17365 nach dezimal umgerechnet). frage ich jetzt aber den farbwert eines pixels(x=10,y=10) bekomme ich folgenden dezimalwert: "4227327". das verstehe ich irgendwie nicht.
Poste das mal im GLBasic Forum. Das muss schon gehen. Ich hab das bei WIZSticks auch so gemacht (sogar in Echtzeit auf dem WIZ).
Wenns bis heut abend in meinem gehirn nicht ratsch macht und ich weiß was ich falsch mache dann post ichs ins glbasic forum.
arrrgh irgendwie frustriert das. macht aber auch höllisch spaß.



gruß

Benutzeravatar
Steinbock
4 Bit
Beiträge: 23
Registriert: Fr Sep 12, 2008 09:27

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#20 Beitrag von Steinbock » Do Apr 09, 2009 10:52

Erschieß mich bitte nicht
Ich hab vor ca 3 Jahren meinen oblig. Militärdienst beendet, bin kein Hobbyschütze und spiele keine "Killerspiele"; also keine Gefahr! :wink:

Allerdings hat sich bei meinem Code auch ein Fehler eingeschlichen :o

Ein (24Bit) Farbwert besteht aus 3 Komponenten. Rot, Grün und Blau. Wie du sicher weisst kann jeder von diesen einen Wert von 0..255 enthalten (in hexadezimaler Form 0x00..0xFF). Diese Werte werden in EINER Zahl nacheinander gespeichert. In hexadezimaler Form sieht das dann etwa so aus: 0x00RRGGBB.

Code: Alles auswählen

        rr=bAND(col,0xFF0000)
        gg=bAND(col,0x00FF00)
        bb=bAND(col,0x0000FF)
isoliert den jeweiligen Farbwert durch Maskierung, d.h. es werden die anderen Komponenten auf 0 gesetzt.
Beim Blauwert ist es nun einfach, da wird jetzt schon der richtige Wert angezeigt.
Da zum Beispiel bei Grün der Wert 2 HEX-Stellen weiter links ist müssen wir um diese 2 Stellen nach rechts verschieben, was einer Division durch 256 entspricht.
Bei Rot sind es 4 Stellen, also Division durch 65536.

Code: Alles auswählen

        rr=INTEGER(rr/65536)
        gg=INTEGER(gg/256)
        bb=INTEGER(bb/1)
Jetzt haben wir also alle einzelnen Komponenten in eigenen Variablen (rr,gg,bb).

In der Funktion

Code: Alles auswählen

FUNCTION ConvertPixel: x%,y%,r%,g%,b%
sind nun r,g,b wiederum "Bit-Masken". D.h. in BINÄRER Form kann eine Zahl mit 8 Stellen angezeigt werden wobei jede einzelne Stelle mit 0 oder 1 belegt sein kann. Nehmen wir zum Beispiel die Zahl 2. In binärer Form sieht die so aus: b00000010. Bitte "google" mal nach Bit-Arithmetik für detailiertere Erklärungen.
Jetzt kommt der Clou. Durch die folgende binäre Maskierung wird überall, wo in unserer Maske (r,g oder b) eine Null ist bei rr,gg oder bb das Bit an der entsprechenden Stelle gelöscht, ansonsten belassen.

ACHTUNG HIER CODE GEÄNDERT !!!

Code: Alles auswählen

        rr=bAND(rr,256-r)
        gg=bAND(gg,256-g)
        bb=bAND(bb,256-b)
Als Beispiel:
rr enthält den Wert b11111111 (255)
r enthält den Wert b00000010 (2)
Zuerst: 256-r=256-2=254=b11111110
Dann:
b11111111
bAND
b11111110
----------
b11111110 = 254
========
Damit haben wir nun alle Werte zwischen 254 und 255 angeglichen auf 254.

Nächstes Beispiel:
rr enthält den Wert b11111111 (255)
r enthält den Wert b00000100 (4)
Zuerst: 256-r=256-4=252=b11111100
Dann:
b11111111
bAND
b11111100
----------
b11111100 = 252
========
Damit haben wir nun alle Werte zwischen 252 und 255 angeglichen auf 252.
Wenn wir diese Zahl immer erhöhen (8,16,32..) wird die Annäherung immer mehr ausgeweitet.

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#21 Beitrag von Schnatterplatsch » Fr Apr 10, 2009 17:36

Danke erstmal das du dir soviel mühe machst!!!!
Weil ich aber von dem was du oben schreibst höchstens die Hälfte verstehe hab ich ein wenig rumexperementiert. das ist dabei rausgekommen:

SETPIXEL 0,0,RGB(255,0,128)
col=GETPIXEL(0,0)


rr=bAND(col,0xFF0000)
gg=bAND(col,0x00FF00)
bb=bAND(col,0x0000FF)

rr=INTEGER(rr/65536)
gg=INTEGER(gg/256)
bb=INTEGER(bb/1)

PRINT rr+"/"+gg+"/"+bb,100,0

SHOWSCREEN
MOUSEWAIT
Liefert bei mir folgendes:
rr=128
gg=0
bb=255
Das ist im Prinzip GENAU das was ich haben wollte: etwas das mir die einzelnen Farbwerte ausließt. Soll deine Arbeit nicht schlecht machen, aber ich will ja selber nachdenken! und mir nicht etwas aufsetzen lassen und es verwenden ohne es zu verstehen.

Aber eigentlich müsste das Programm, ja folgendes zurückliefern, oder???
rr=255
gg=0
bb=128
siehst du den Fehler???? naja im prinzip ist es egal ich kann die beiden werte ja vertauschen.


gruß


PS. ich hab jetzt übrigens meinen gp2x f100

Benutzeravatar
Steinbock
4 Bit
Beiträge: 23
Registriert: Fr Sep 12, 2008 09:27

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#22 Beitrag von Steinbock » Fr Apr 10, 2009 20:29

Hast recht.

Bei 24-Bit Bitmaps ist die Reihenfolge 0xBBGGRR.
Bei 32-Bit Bitmaps 0xRRGGBB

Benutzeravatar
GernotFrisch
7 Bit
Beiträge: 230
Registriert: Di Aug 28, 2007 11:53
Wohnort: neben dem ED ;)
Kontaktdaten:

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#23 Beitrag von GernotFrisch » Sa Apr 11, 2009 05:49

Nicht ganz. Bei Intel ist die Reihenfolge immer 0xAABBGGRR (little endian). Ich hab das in GLBasic so eingabaut, dass es auf jeder Platform so zurückgeliefert wird.
GLBasic
Basic for gamers

Benutzeravatar
knotenpunkt
9 Bit
Beiträge: 969
Registriert: Do Dez 18, 2008 18:04
Wohnort: Bochum

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#24 Beitrag von knotenpunkt » Sa Apr 11, 2009 23:27

Mal eine Frage an die GLBasic-Experten hier:

Man kann mit dem Programm ja so schön quasi einfach per Knopfdruck sein Spiel für verschiedene Systeme kompilieren lassen, u.a. ja auch für den GP2X. Weiss jemand, ob dieses sehr hilfreiche Tool auch mal für den Wiz und die Pandora intigriert wird? Gibts da schon Statements seitens der GLBasic-Entwickler?

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#25 Beitrag von Schnatterplatsch » So Apr 12, 2009 10:02

So, das Problem hat sich gelöst. Ich muss mich entschuldigen, denn das eigentliche Problem wart meine eigene Blödheit. Ich das Bild vom schff nämlich erst mit 80x80 Pixeln gemalt. Und dann dummerweiese mit Paint auf 40x40 Pixel geschnitten. dadurch entstanden die Ränder. Bilder neu gemalt, smoothshading false eingesetzt(um das bisschen Rand das blieb auch wegzubekommen), und alles sieht super aus. heißt jetzt aber nicht das deine Mühe umsonst war, denn die GetColor Funktionen hätte ich sowieso noch für andere sachen gebraucht.

Es hat sich aber ein neues Problem ergeben. Wenn ich mein Programm auf dem GP2x Starte scheint es alle Bilder ZWEIMAL zu malen. Einmal, da wo ich sie haben will, und einmal 320 Pixel witer links. Das macht sich besonders dann schlecht, wenn man nach rechts schießt. dann kommen plötzlich von rechts laser aus dem nicht angeflogen. liegt das an meiner Demoversion???? auf dem pc funktionierts nämlich einwandfrei.

Ich werde nachher bilder und sourcecode hochladen. Hoffentlich hab ich dich nicht vergräult.


sorry und gruß

Benutzeravatar
GernotFrisch
7 Bit
Beiträge: 230
Registriert: Di Aug 28, 2007 11:53
Wohnort: neben dem ED ;)
Kontaktdaten:

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#26 Beitrag von GernotFrisch » Mo Apr 13, 2009 06:30

GLBasic kann WIZ compilieren. Pandora, wenn ich eine in den Fingern habe.
Wenn's am PC anders ist als bei GP2X, scheint etwas nicht i.O. zu sein.
GLBasic
Basic for gamers

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#27 Beitrag von Schnatterplatsch » Mo Apr 13, 2009 10:20

Wenn's am PC anders ist als bei GP2X, scheint etwas nicht i.O. zu sein
Entschuldige meinen Sarkasmus, aber hey, dass hab ich auch schon bemerkt.

woran könnte es denn liegen??

brauchste den sourcecode???

Benutzeravatar
Steinbock
4 Bit
Beiträge: 23
Registriert: Fr Sep 12, 2008 09:27

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#28 Beitrag von Steinbock » Mo Apr 13, 2009 12:39

Hast du im Menü Projekt->Optionen unter GP2X die Auflösung auf 320x240 eingestellt?

Benutzeravatar
Schnatterplatsch
9 Bit
Beiträge: 845
Registriert: Di Mär 17, 2009 18:51

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#29 Beitrag von Schnatterplatsch » Mo Apr 13, 2009 14:35

Hast du im Menü Projekt->Optionen unter GP2X die Auflösung auf 320x240 eingestellt?
War sie, aber nachdem ich da comilieren für gp2x eingestellt hab funktioniert es.....

Ok, in zukunft lass ich erstmal 24h stunden verstreichen bevor ich hier ein problem poste.....

thank you


gruß

Benutzeravatar
GernotFrisch
7 Bit
Beiträge: 230
Registriert: Di Aug 28, 2007 11:53
Wohnort: neben dem ED ;)
Kontaktdaten:

Re: Ein paar Fragen zu GLBasic und dem Gp2x

#30 Beitrag von GernotFrisch » Di Apr 14, 2009 08:10

Oh, kann dann doch ein Bug sein. Muss ich mir ansehen. Danke für die Info!
GLBasic
Basic for gamers

Antworten

Zurück zu „GLBasic“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste