Italia
C ++ Foro

irgendein Speicherfehler per das Bild?

 
- Page 1 -


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
Downloadcounter81
Download
 
08.09.2008  
 



 
- Page 1 -



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>

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

mfg
peter
 
12.09.2008  
 



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



 
- Page 2 -


"end proc"

Natürlich zusammen. Wurde hier falsch reinkopiert.
Ist in meinem beanstandeten Programm richtig.

mfg
 
12.09.2008  
 



procedure glScaled(x, y, z: TGLdouble);

Auszug aus Opengl-Delphi .

mfg
peter
 
12.09.2008  
 



Falsche Hilfedatei, ogl("scale",x!) ist XProfan - nicht Delphi. Hier wird zudem die API genutzt, dass kannst Du mit XProfan ganz einfach: ogl("glScaled",...
 
12.09.2008  
 



Also dann sollte das mal in Xprofan10 /11 dem Täglichen original Befehl angepasst werden.

mfg
peter
 
12.09.2008  
 



Es gibt keine Abweichungen, es sind 2 unterschiedliche Funktionen und Sprachen. Den Sinn dahinter, ogl.scale auf 1 Parameter zu beschränken, habe ich aber damals schon nicht gefunden. Roland potuto auch 3 Parameter ermöglichen.
 
12.09.2008  
 




Sebastian
König
Hallo Peter,

die Anweisung per das Inline-C++ sollte ein Kommentar sein:
KompilierenMarkierenSeparieren
...
P2CPP: <INLINE_CPP>
DWORD a = PVAR(c%);
DWORD b = PVAR(d%);
P2CPP: </INLINE_CPP
/pre>

Von Profan2Cpp aus gibt es per den Code eigentlich keine direkte Einschränkung - Du kannst einfach mal ausprobieren, was funktioniert und was nicht.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
13.09.2008  
 



Ah...und ich dachte das dieses "<INLINE_CPP>" ein Befehl war.

danke.

mfg
peter
 
13.09.2008  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.645 Views

Untitledvor 0 min.
funkheld17.12.2013

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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