Wünsche und Anregungen | | | | | SaveBmp speichert nicht die OGL-Ausgabe. (Bestimmt nurn DC-Problem) [...] KompilierenMarkierenSeparieren {$cleq}
cls
ogl(init,%hwnd,0.0,0.0,0.0,1)
oGL(Clear)
--Cam:
oGL(Origin, 0, 0, -15)
oGL(Rotate, 10, 10, 0)
oGL(Move, 0, -1, 0)
--Objects:
ogl(Pop)
ogl(Push)
ogl(Move,0,-0.5,-50)
ogl(rotate,90,0,0)
ogl(color,3,3,3,1)
ogl(quad,100,100)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(color,1,0,0,1)
ogl(cuboid,3,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,2,0,0)
ogl(color,4,1,0,1)
ogl(cuboid,0.7,0.8,0.8)
ogl(Pop)
ogl(Push)
ogl(Move,2.32,0.3,0)
ogl(color,0,0,0,0)
ogl(cuboid,0.1,0.4,0.81)
ogl(Pop)
ogl(Push)
ogl(Move,2.32,0.04,0)
ogl(color,0,0,1,0)
ogl(cuboid,0.1,0.2,0.81)
ogl(Pop)
ogl(Push)
ogl(Move,0.4,-0.12,0)
ogl(color,1,0,0,1)
ogl(cuboid,3.8,0.1,1)
ogl(Pop)
ogl(Push)
ogl(Move,1.6,-0.51,-0.51)
ogl(disk,0.06,0.3,30)
ogl(Pop)
ogl(Push)
ogl(Move,1.6,-0.51,0.51)
ogl(disk,0.06,0.3,30)
ogl(Pop)
ogl(Push)
ogl(Move,-1.1,-0.51,0.51)
ogl(disk,0.06,0.3,30)
ogl(Pop)
ogl(Push)
ogl(Move,-1.1,-0.51,-0.51)
ogl(disk,0.06,0.3,30)
ogl(Pop)
ogl(Push)
ogl(Move,1.6,-0.2,0.5)
ogl(color,0,0,1,5)
ogl(rotate,-90,0,0)
ogl(tube,0.03,0.03,1,9)
ogl(Pop)
ogl(Push)
ogl(Move,-1.1,-0.2,0.5)
ogl(color,0,0,1,5)
ogl(rotate,-90,0,0)
ogl(tube,0.03,0.03,1,9)
ogl(Pop)
ogl(Push)
ogl(Move,2.34,0.06,0.25)
ogl(sphere,0.08,50,50)
ogl(Pop)
ogl(Push)
ogl(Move,2.34,0.06,-0.25)
ogl(sphere,0.08,50,50)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,0,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,15,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,30,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,45,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,60,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,75,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,90,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,105,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,120,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,135,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,150,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,165,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,180,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,195,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,210,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,225,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,240,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,255,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,270,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,285,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,300,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,315,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,330,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
ogl(Pop)
ogl(Push)
ogl(Move,0,0,0)
ogl(rotate,345,0,0)
ogl(move,0,10,0)
ogl(cuboid,1,1,1)
--
ogl(show)
savebmp c:\test.bmp,0,0 - width(%hwnd),height(%hwnd)
waitinput
cls
loadbmp c:\test.bmp,0,0;0
waitinput
end
Workaround: KompilierenMarkierenSeparieren
ogl.savebmp(string fle,long x,y,xx,yy){
savebmptoclip x,y - xx,yy
cliploadbmp x,y;0
savebmp fle,x,y - xx,yy
clearclip
}
Nachteil vom Workaround: Die Zwischenablage wird gelöscht. In diesem Zusammenhang: Es fehlt eine Proc clipsavebmp. (Clipboardbild in Datei speichern) |
| | | | |
| | RGH | OpenGL benutz einen eigenen, speziellen DeviceContext. Daher können Befehle wie SaveBMP nicht mit dem OpenGL-Bild funktionieren.
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.08.2007 ▲ |
| |
| | Frank Abbing | Wäre aber sicher einfach den SpezialDC in einen normalen zu kopieren/konvertieren und dann zu speichern. |
| | | | |
| | RGH | Gewiß, aber es wäre doch ein wenig mit Verwaltungsaufwand verbunden, da das ja nur dann Sinn macht, wenn das Hauptfenster der OpenGL-Bildschirm ist. Dazu müßte ich ein Flag schaffen. Und vermutlich kommt dann der Wunsch auf, daß alle BMP-Befehle die fürs Hauptfenster gelten, in diesem Fall dann auch für den OpenGL-DC gelten ... ... aber man könnte drüber nachenken.
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.08.2007 ▲ |
| |
| | Frank Abbing | Siehste, wieder Anregungen für 11er Version... |
| | | | |
| | | Ein Rolandsches ogl(savebmp würde das Problem schon lösen, oder besser ein ogl(copybmptomem |
| | | | |
| | RGH | iF
Ein Rolandsches ogl(savebmp würde das Problem schon lösen, oder besser ein ogl(copybmptomem
Ja, daran hatte ich zuerst auch gedacht (wäre auch die einfachst zu realisierende Variante), aber irgendwie geht mir das noch nicht weit genug ... aber ich bin schon am Basteln. Mir macht Puzzeln nämlich Spaß ... und wenn es mit Programmcode ist ... ;)
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.08.2007 ▲ |
| |
| | RGH | Ok, ein erster Schritt ist getan: Wenn das OGL-Fenster das Hauptfenster ist, wird der OGL-DC genommen und iFs obiges Programm funktioniert wie von iF gewünscht, aber das ist noch nicht alles ...
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.08.2007 ▲ |
| |
| | RGH | Wo ich gerade dabei bin, Schritt 2:
Bislang (ab XProfan 10) Ist es möglich. mit create(hPic,0,&MEMBMP) eine Bitmap zu erzeugen, die die Memorybitmap zum Inhalt hat. Hier habe ich einige weitere integrierte Ressourcennamen hinzugefügt:
&OGLBMP: Ein Abbild des aktuellen OpenGL-Bildes wird als Bitmap erzeugt &SCRBMP: Ein Abbild des aktuellen Hauptfensters wird als Bitmap erzeugt &DSKBMP: Ein Abbild des aktuellen Desktops wird als Bitmap erzeugt
Schritt 3: SavePic Dateiname$, Bitmaphandle&
All diese (und andere) Bitmaps kann man über ihr Bitmaphandle als BMP-Datei abspeichern.
Gruß Roland
PS: Alle Angaben ohne Gewähr! (Ich überlege z.B. noch, ob ich bei SavePic die Parameter vertauschen soll ... |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.08.2007 ▲ |
| |
| | | Bei SavePic den Dateinamen ganz vorn. Gewohnt von LoadBmp und SaveBmp .
Statt &SCRBMP besser &HDCBMP, einfach wg. &hdc |
| | | | |
| | RGH | iF
Man könnte auch argumentieren: Das Handle zuerst. Gewohnt von DrawPic ... ;)
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.08.2007 ▲ |
| |
| | | Nein das ist kein Argument da Drawpic keinen Dateinamen benötigt. Aber ich bin sicher Du hast Dich längst dafür entschieden den Dateinamen als ersten Parameter zu belegen, so wie es auch sein soll[te]. |
| | | | |
|
AntwortenThemenoptionen | 7.144 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |