Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 07.09.2007, 21:01 Titel: |
|
|
Also ich habe den obigen Post nur als Beispiel angegeben (das mir auf die schnelle eingefallen war) nicht als ultimative loesung, es ist praktisch wenn man mal schnell was 'hinklatschen' will um variablen zu pruefen ect... _________________
 |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 07.09.2007, 21:02 Titel: |
|
|
atari hat Folgendes geschrieben: | also lasst den unsinn mit text im openglfenster. als anfän ger zum testen ja und dann finger davon. | Eigentlich wollte ich nur damit die genaue Position einer Figur auslesen...
Auserdem ist mir grad auch ne höchst einfache Lösung durch Jojo eingefallen ich kann das ja in der Konsole ausgeben:
Code: | shell "echo "+str(position) |
atari hat Folgendes geschrieben: | die fenster sind geschickt angebunden und für den nutzer als ein screen sichtbar. | Echt jetzt???  |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 08.09.2007, 14:43 Titel: |
|
|
noch eine bessere lösung :
ich mache meine steuerungen alles über das clipboard und screen, können auch mehrere sein, die man geschickt optisch zusammen bringt oder nur einen screen den man dann auch optisch schön aufbereitet.
daten zum openglfenster zum steuern der objekte und auch die daten von dem opengl-objekten zur orientierung zur darstellung auf dem screen. klappt wunderbar.
Code: |
#include "windows.bi"
Declare Sub WriteClipboard(Text As String)
Declare Function ReadClipboard() As String
Dim As String a
Screen 12
Input a
WriteClipboard(a)
Print ReadClipboard
sleep
Sub WriteClipboard(Text As String)
Dim As Any Ptr lpMem, hGlobalClip
hGlobalClip=GlobalAlloc(GMEM_MOVEABLE Or GMEM_SHARE, Len(Text)+1)
OpenClipboard(0)
EmptyClipboard()
lpMem=GlobalLock(hGlobalClip)
lstrcpy(lpMem, strptr(Text))
GlobalUnlock(lpMem)
SetClipboardData(CF_TEXT, hGlobalClip)
CloseClipboard()
End Sub
Function ReadClipboard() As String
Dim As Any Ptr hGlobal, pGlobal
Dim As String txt
OpenClipboard(0)
hGlobal=GetClipboardData(1)
If hGlobal then
pGlobal=GlobalLock(hGlobal)
txt=Space(lstrlen(pGlobal)) ' txt auf die Länge des Clipboards bringen
lstrcpy(strptr(txt), pGlobal)
ReadClipboard=txt
End If
CloseClipboard()
End Function
|
mit netzwerkbefehlen habe ich das auch schon versucht, klappt manchmal nicht und kommt mir so langsam vor.
vielleicht kann jojo ja mal was machen, das die fenster untereinander kommunizeiren können mit netzwerkbefehlen, aber einfach stricken. |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 08.09.2007, 21:38 Titel: |
|
|
Ich wollte auch mal Informationen über die Zwischenablage an mehrere Fenster senden. Das war damals in meinem Programm allerdings ein Schuss in den Ofen.  |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 09.09.2007, 03:25 Titel: |
|
|
@atari:
oO schlechter Stil
hGlobal ist vom Typ HGLOBAL (und nicht any ptr)
und pGlobal ist ein ZString Ptr (da FB die "alte" GlobalLockA verwendet, und nicht die "neue" Unicode GlobalLockW (falls es diese diff. überhaupt bei diesen kleinen Funktionen gebn sollte)
Zitat: | ich mache meine steuerungen alles über das clipboard und screen, | Nur dumm, dass so die vorherigen Daten im ClipBoard verloren gehen.
Zitat: | atari hat Folgendes geschrieben:
die fenster sind geschickt angebunden und für den nutzer als ein screen sichtbar.
Echt jetzt??? geschockt |
Nö.
Die HL-Engine, z.B., verwendet praktisch betrachtet einfach diese Funktion, nur halt ein "bisschen sehr viel" erweitert.
Zitat: | opengl können nur die leute die sich damit befassen, ansonsten ist es nur eine hinfrimelei und bringt nichts.
wer nur freebasic/qbasic kann soll die finger von opengl lassen und deren ureigentlichen grafikbefehle ausreizen. opengl ist etwas besonderes.
es gibt nur 3 leute hier im forum die das beherrschen , ich und 2 andere. |
Den ersten Satz kapiere ich nicht. (hä?)
@2Sentence:
Sonst gehts dir wohl noch ganz richtig im Kopfe, gell?
OGL zeichnet sich doch gerade dadurch aus, dass es UNABHÄNGIG vom OS, UND von der Sprache ist
@3Sentence:
Bitte outen (nicht dass ich nicht wüsste, wenn er nicht nicht nicht nicht meint. ) _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 09.09.2007, 10:27 Titel: |
|
|
Zitat: |
Den ersten Satz kapiere ich nicht. (hä?)
|
hä, ich mache ein opengelfenster auf oder auch zwei. dann noch ein normalen grafikscreen(freebasictypisch), den teile ich in mehrere bereiche auf zb um dort die entfernung der objekte untereinander anzugeben(xyz),
grafische button(keine gui von windows sondern selber entworfen) usw. ist ein richtig nett aussehender screen für sich, man auch sagen spieleresultatfenster.
wenn ich jetzt zb ein button anklicke, wird ein text zum anderen openglfenster über das clipboard geschickt nach dem motto, tue jetz das was ich dir schicke. das openfenster schaut im interrupt dauernd nach ob etwas im clipboard steht, wenn es für dieses openglfenster ist, holt es sich das aus dem clipboard (löscht ds clipboard) und verarbeitet es. durch eine kennung im text kann ich bestimmen für welches openglfenster es ist.
da ich einen langsamen rechner habe mache ich nur 2 openglfenster auf.
andersherum kann das openglfenster auch daten in das clipboard legen für mein steuerungsfenster und da läuft es genauso ab, wichtig ist die kennung, damit es an das richtige fenster kommt.
ich hatte es schon über netzwerkbefehle versucht, da klappt es noch nicht so richtig, vielleicht schafft das einer mal.
nun frohes schaffen bei der grafik und opengl programmierung. ich hoffe ihr habt auch spass damit. es fesseld ein, immer etwas neues. na denn. |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 09.09.2007, 10:32 Titel: |
|
|
Zitat: |
oO schlechter Stil zwinkern
hGlobal ist vom Typ HGLOBAL (und nicht any ptr) zwinkern
und pGlobal ist ein ZString Ptr (da FB die "alte" GlobalLockA verwendet, und nicht die "neue" Unicode GlobalLockW (falls es diese diff. überhaupt bei diesen kleinen Funktionen gebn sollte) zwinkern
|
ich bin für jeden produktiven vorschlag dankbar. danke, das du mir helfen willst mach mal ein kurze beispiel mit den beiden fenstern, danke.
man lernt immer neue sachen dazu, ich freue mich.
Zitat: |
Nö.
Die HL-Engine, z.B., verwendet praktisch betrachtet einfach diese Funktion, nur halt ein "bisschen sehr viel" erweitert.
|
helf mir hier auch mal bei, es gibt doch gute user hier.
Zitat: |
Nur dumm, dass so die vorherigen Daten im ClipBoard verloren gehen. zwinkern
|
das habe ich nicht gewusst, toll das du dich so in die materie rein knieen tust. erklär mir das mal. hmm, freebasic ist unergründlich, das ist der reiz.
aber dafür gibt es ja das nette forum.
Zuletzt bearbeitet von atari am 09.09.2007, 10:37, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 09.09.2007, 10:36 Titel: |
|
|
csderats hat Folgendes geschrieben: |
Zitat: | ich mache meine steuerungen alles über das clipboard und screen, | Nur dumm, dass so die vorherigen Daten im ClipBoard verloren gehen.
|
Das könnte man doch lösen indem man das Clipboard erst ausliest und danach in nen String packt, bevor man was sendet. Wenn man das Prog dann beendet werden noch die Daten aus dem zuvor gespeicherten String wieder ins Clipboard kopiert und dann: hatt man fertig.  |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 09.09.2007, 10:49 Titel: |
|
|
Zitat: |
Das könnte man doch lösen indem man das Clipboard erst ausliest und danach in nen String packt, bevor man was sendet.
|
das mache ich ja durch die fensterkennung im string. bei mir wird es ja beim auslesen aus dem clipboard nicht gelöscht sondern erst wenn es im zugehörigen fenster im string aufgenommen wurde.
bei 3 fenster wird das clipboard von jedem der 3 fenster abgefragt ob es zu ihm gehört.
ich habe jetzt in freebasic noch keinen speicherbereich gefunden worauf jedes externe fenster bzw externe freebasicprogramm(exe) zugreifen kann um den abzufragen. über netzwerkbefehle müsste es gehen, habe aber noch keine vernünftige lösung gefunden die so schnell ist wie beim clipboard. |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 09.09.2007, 10:58 Titel: |
|
|
Oha, so hast du das gelöst. Auch ne elegante Möglichkeit. |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 09.09.2007, 11:54 Titel: |
|
|
@atari:
Das mit den mehreren Screens wäre eher ein Geschwindigkeitsverlust, da man ja die ganzen Screens mit einer Maske (Speicher bei hohen Auflösungen!) oder mit einem Alphakanal (Geschwindigkeit!) verknüpfen müsste.
Dann auch noch Teiltransparenz (Auch nicht sehr effektiv!)!
Nun, wenns darum geht, dass mehrere Instanzen des selben Programmes untereinander kommunizieren, dann ist die Implementierung mit z.B. SDL_net, WinSockets o.ä. die sauberere Methode
Wenn sich das ganze auch auf die loopback-Adresse bezieht ist es schneller als das ClipBoard  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 09.09.2007, 15:26 Titel: |
|
|
Zitat: |
Das mit den mehreren Screens wäre eher ein Geschwindigkeitsverlust, da man ja die ganzen Screens mit einer Maske (Speicher bei hohen Auflösungen!) oder mit einem Alphakanal (Geschwindigkeit!) verknüpfen müsste.
Dann auch noch Teiltransparenz (Auch nicht sehr effektiv!)!
|
was meinst du wie schnell die grafikbefehle im normalen freebasic sind, das glaubst du gar nicht, programmier das mal ,so schnell kann man nicht gucken. maske und transparenz brauche ich für einen info-schirm nicht, da ist schon genug im openglfenster von drin, diese arbeit soll das opengl machen.
Zitat: |
Geschwindigkeitsverlust
|
was ist für uns kleine unwichtigen homeanwender schon geschwindigkeitsverlust.
wir schreiben keine programme für eine benzineinspritzpumpe oder werten die luftmenge aus mit dem dazugehörigen kraftstoffanteil bei 6000 umdrehungen pro minute oder so.
das sollen die leute machen die damit geldverdienen. das ist für unsere spielobjekte so unwichtig. es gibt schlimmeres im leben.
der eine macht es so der andere so. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 09.09.2007, 19:17 Titel: |
|
|
Bei Hardcore-Gamern ist Geschwindigkeit (und damit die FPS-Zahl) durchaus wichtig.
Und dass die Grafikbefehle schneller sind, als man schaut, liegt vllt. daran, dass der Computer "ein bisschen" schneller arbeitet, als das menschliche Augen ebendiese Grafikbefehle wahrnimmt.
Und ich bin der Meinung, dass man mit Direktzugriff auf OGL gleiche Geschwindigkeiten erreicht (erreichen kann), wenn man auf ein paar Dinge achtet (effiziente Programmierung z.B.). _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|