| |
|
|
| Wenn ich hier im Programm mein linkes Opengl-Bild drehe (Taste Q/E), soll im rechten Fenster das Bild als normales Pic dargestellt werden. Es funktioniert soweit unter dem normalen Profan, mit Profan2cpp nicht Das Problem, ist wenn ich anfange zu drehen, dann wird das rechte Bild erneuert, aber die Fläche ist weiss, es sind keine Daten drin
Muss in Profan2cpp irgendwie der Speicher fürs Bild usw anders reserviert werden? Welche Fehler habe ich gemacht. Unten ist das gesamte Programm.
Im Anhang ist eine Zip auch mit eine EXE von Profan und eine EXE von Profan2cpp KompilierenMarkierenSeparieren $H Windows.ph
DEF rgb_umwandlung(2) ! "bmptex.dll","bmptex"
declare x1!,y1!,dx!,dy!,winkel!,y&,z%,a&,test%
declare bild_auto_h&,bild_umw_h&
declare bmi#,bildxy# ,ogl_rgb#
dim ogl_rgb#,128*128*4+1032
var texid%=0
var ende%=1
Window 20,20-600,400
Cls @RGB(220,220,220)
var hWin& = @Create("text", %hWnd, "Test1", 10, 10, 128,128)
var hWin1& = @Create("text", %hWnd, "Test1", 180, 10, 250,250)
oGL("Init", hwin&, 0,0, 0, 0)
oGL("PosMode", 1)
ogl("glReadBuffer",~GL_Front)
bild_auto_h& = Create("hPic", -1,"leer.bmp") Bildcontainer für "setDIBits"
var tex.auto%=erzeugetex("auto.bmp")
setTimer 18
drawglscene
drawglscene
oglzubmp
WHILE ende%
WaitInput
if isKey(81)
winkel!=winkel!+1.0
drawglscene
oglzubmp()
endif
if isKey(69)
winkel!=winkel!-1.0
drawglscene
oglzubmp()
endif
ENDWHILE
killTimer
end
proc oglzubmp
ogl("glReadPixels",0,0,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#)
~setDIBits(%hdc,bild_auto_h&,0,128,ogl_rgb#,bmi#,0)
mcls 128,128
startpaint -1
drawpic bild_auto_h&,0,0,-1
endpaint
startpaint hWin1&
mcopybmp 0,0-127,127>50,50,-1
endpaint
endproc
proc drawglscene
OGL("Clear")
OGL("origin",0,0,-1.11)
OGL("texture",tex.auto%,1)
OGL("rotate",0,0,winkel!)
OGL("quad",0.5,0.5)
OGL("show")
endproc
proc bitmap_header
def &BI_RGB 0
def &DIB_RGB_COLORS 0
struct BITMAPINFOHEADER =
biSize&, biWidth&, biHeight&, biPlanes%, biBitCount%, biCompression&,
biSizeImage&, biXPelsPerMeter&, biYPelsPerMeter&, biClrUsed&, biClrImportant&
dim bmi#,BITMAPINFOHEADER
clear bmi#
with bmi#
.biSize& = sizeof(bmi#)
.biWidth& = 128
.biHeight& = 128
.biPlanes% = 1
.biBitCount% = 32
.biCompression& = &BI_RGB
.biSizeImage& = ((.biWidth& * .biBitCount% 8 - 1) | 3 + 1) * abs(.biHeight&)
endwith
endproc
proc erzeugetex
parameters namebild$
bitmap_header()
bild_umw_h& = Create("hPic", -1, namebild$)
a&=bmi#.biSizeImage&
dim bildxy#,a&+1032
~GetDIBits(%hdc,bild_umw_h&,0,bmi#.biHeight&,bildxy#,bmi#,0)
rgb_umwandlung(bildxy#,a&)
OGL("glGenTextures",1,ADDR(texid%))
OGL("glBindTexture",~GL_TEXTURE_2D,texid%)
OGL("glEnable",~GL_ALPHA_TEST)
OGL("glAlphaFunc",~GL_GREATER, 0.1)
OGL("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MAG_FILTER, ~GL_LINEAR)
OGL("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MIN_FILTER, ~GL_LINEAR)
OGL("gluBuild2DMipmaps",~GL_TEXTURE_2D, ~GL_RGBA, 128, 128, ~GL_RGBA, ~GL_UNSIGNED_BYTE, bildxy#)
dispose bildxy#
RETURN texid%
endproc
mfg peter |
|
|
| |
|
|
|
Sebastian König | Hallo Peter,
prinzipiell sollte es mit Profan2Cpp genauso funktionieren wie mit XProfan - ich gehe also mal davon aus, dass es ein Fehler in Profan2Cpp ist. Ich werde mir das mal ansehen und mich wieder melden - kann aber leider etwas dauern (Mittwoch abend oder Donnerstag morgen) da ich im Moment gerade ziemlich ausgelastet bin...
MfG
Sebastian |
|
|
| |
|
|
|
| Hallo Sebastian, danke per deine Aiuto.
mfg peter |
|
|
| |
|
|
|
| Im Anhang ist noch eine mit dem gleichen Fehler. Bei der Profan2cpp erscheint nicht die Bitmap.
Steuern kann man mit den Tasten "QWES"
mfg peter |
|
|
| |
|
|
|
Sebastian König | Hallo Peter,
ich habe mir die Sache gerade mal angesehen. Die gute Nachricht ist, dass der erste Testcode mit dem kommenden Profan2Cpp 2.0 schon korrekt funktioniert. Nur bei dem zweiten (aus dem ZIP-Archiv) gibt es noch einen Darstellungsfehler (das Auto im rechten Fenster ist einfach eine schwarze Box...). Ich werde mich bemühen, diesen Bug in Version 2.0a zu beheben.
Profan2Cpp 2.0 wird offiziell zusammen mit XProfan 11 erscheinen (hoffentlich bald). In den nächsten Tagen werde ich schonmal die neue Testversion auf der Profan2Cpp-Homepage zum Download einstellen.
MfG
Sebastian |
|
|
| |
|
|
|
|
In den nächsten Tagen werde ich schonmal die neue Testversion auf der Profan2Cpp-Homepage zum Download einstellen.
Hmm..., sind die nächsten Tage schon rum.... Kannst kaum erwarten.
mfg peter |
|
|
| |
|
|
|
Sebastian König | Peter Bierbachh
Hmm..., sind die nächsten Tage schon rum.... Kannst kaum erwarten.
Ich werde mich bemühen, es bis heute abend (dt. Zeit) fertigzumachen. |
|
|
| |
|
|
|
Sebastian König | Ok, erledigt Auf der Profan2Cpp-Homepage [...] gibt es nun die Testversion 2.0 zum Download. |
|
|
| |
|
|
|
| Hallo, das ging aber Superschnell. Die Grafik funktioniert auch wie sie soll.
Eine tolle Arbeit das ganze Profan2cpp 2.0
Wenn ich jetzt mit BCC55 compiliere, kann ich dann da auch "if-auswertungen " ala C++ gemäß BCC55 reinbringen usw oder gibt es da irgendwelche besondere einschränkungen, das nur bestimmter Code genommen werden darf?
Ein Fehler? Der Compiler beanstandet die "PVAR", das er die nicht kennt, wenn ich ich auf weiter gehe, stürzt er ab. KompilierenMarkierenSeparieren |
|
|
|
|
Jörg Sellmeyer | Ob das mit dem Inline CPP geht, kann ich nicht sagen aber Du meinst doch sicher "EndProc" und nicht "end proc", oder? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.09.2008 ▲ |
|
|
|
|
| oGL("scale", scale_1!, scale_1!,scale_1!)
Dieser Befehl wird beanstandet, weil die falsche Anzahl von Parametern trasferimento wird. Bei Scale werden aber 3 Parameter trasferimento. (war bei Vers 1.6c nicht)
mfg peter |
|
|
| |
|
|
|
| Ein Parameter per ogl.Scale! (in die Falle bin ich auch schon getappt) |
|
|
| |
|
|