Deutsch
C ++ Forum

irgendein Speicherfehler für das Bild?

 
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

590 kB
Hochgeladen:08.09.2008
Ladeanzahl81
Herunterladen
 
08.09.2008  
 




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
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
08.09.2008  
 



Hallo Sebastian, danke für deine Hilfe.

mfg
peter
 
08.09.2008  
 



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

602 kB
Hochgeladen:08.09.2008
Ladeanzahl64
Herunterladen
 
08.09.2008  
 




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
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.09.2008  
 




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
 
11.09.2008  
 




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.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
12.09.2008  
 




Sebastian
König
Ok, erledigt Auf der Profan2Cpp-Homepage  [...]  gibt es nun die Testversion 2.0 zum Download.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
12.09.2008  
 



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
declare x%,y%
x%=1
y%=100
cls
test(x%,y%)
WaitInput
end

proc test

    parameters c%,d%
    <INLINE_CPP>
    DWORD a = PVAR(c%);
    DWORD b = PVAR(d%);
    </INLINE_CPP>

endproc


mfg
peter
 
12.09.2008  
 




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 übergeben wird.
Bei Scale werden aber 3 Parameter übergeben.
(war bei Vers 1.6c nicht)

mfg
peter
 
12.09.2008  
 



Ein Parameter für ogl.Scale! (in die Falle bin ich auch schon getappt)
 
12.09.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.598 Betrachtungen

Unbenanntvor 0 min.
funkheld17.12.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie