Español
C ++ Foro

¿Por qué muss Yo : drawogl 2x hintereinander eingeben..

 
¿Por qué muss Yo mi Función : drawogl 2x hintereinander eingeben, así se el Objeto dreht.
Aber sólo beim Compilieren con Profano2Cpp. Ansonsten no.
El dll braucht uno con para Ablauf.
KompilierenMarcaSeparación
 $H Windows.ph
DEF rgb_umwandlung(2) ! bmptex.dll,bmptex
declare x1!,y1!,dx!,dy!,winkel!,groesse&,handleogl&
declare hWin&,hwin1&,hintergr&,tex.auto&
declare width&,height&,texid&,ende&
declare bild_auto_h&,bild_umw_h&
declare bmi#,bildxy#
groesse&=128*128*4
dim bildxy#,groesse&
ende&=1
Window 20,20-800,600
Cls @RGB(220,220,220)
hWin& = Create(text, %hWnd, Test1, 10, 10, 128,128)
hWin1& = Create(text, %hWnd, Test2, 250, 20, 500,500)
oGL(Init, hwin&, 0,0, 0, 0)
oGL(PosMode, 1)
bild_auto_h& = Create(hnewPic,64,64,0 )
hintergr&=create(hnewpic,500,500,$00ffff)
tex.auto&=erzeugetex(auto.bmp)
drawogl
drawogl
oglzubmp
drawscene

WHILE ende&

    WaitInput

    if isKey(87)

        y1!=Sin((-winkel!)/180.0*pi())*2
        x1!=Cos((-winkel!)/180.0*pi())*2
        dx!=dx!-x1!
        dy!=dy!-y1!
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(83)

        y1!=Sin((-winkel!)/180.0*pi())*2
        x1!=Cos((-winkel!)/180.0*pi())*2
        dx!=dx!+x1!
        dy!=dy!+y1!
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(81)

        winkel!=winkel!+1.0
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(69)

        winkel!=winkel!-1.0
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

ENDWHILE

end

proc drawogl

    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 oglzubmp

    DeleteObject handleogl&
    handleogl&=create(hPic,0,&OGLBMP )

endproc

proc drawscene

    StartPaint hwin1&
    drawpic hintergr&,0,0;0
    drawpic handleogl&,100+dx!,100+dy!,-1 ;-1
    EndPaint

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&       = width&
        .biHeight&      = height&
        .biPlanes%      = 1
        .biBitCount%    = 32
        .biCompression& = &BI_RGB
        .biSizeImage&   = ((.biWidth& * .biBitCount%  8 - 1) | 3 + 1) * abs(.biHeight&)

    endwith

endproc

proc erzeugetex

    parameters namebild$
    texid&=0
    height&=128
    width&=128
    dispose bmi#
    bitmap_header()
    bild_umw_h& = Create(hPic, -1, namebild$)
    ~GetDIBits(%hdc,bild_umw_h&,0,bmi#.biHeight&,bildxy#,bmi#,0)
    rgb_umwandlung(bildxy#,groesse&)
    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, height&, width&, ~GL_RGBA, ~GL_UNSIGNED_BYTE, bildxy#)
    dispose bildxy#
    ref='./../../funktionsreferenzen/XProfan/volver/'>RETORNO texid&

ENDPROC


2 kB
Hochgeladen:27.02.2009
Ladeanzahl205
Descargar
 
27.02.2009  
 




Sebastian
König
¡Hola Peter,

Peter Bierbachh
¿Por qué muss Yo mi Función : drawogl 2x hintereinander eingeben, así se el Objeto dreht.
Aber sólo beim Compilieren con Profano2Cpp. Ansonsten no.
El dll braucht uno con para Ablauf.


desafortunadamente kann Yo el problema todavía no nachvollziehen... Auch si yo el doppelten drawogl-Aufrufe auskommentiere, kann Yo no hay diferencia zwischen XProfan- y Profano2Cpp-Variante determinar. Das Objeto dreht y bewegt se como se.

Kann lo evtl. veces alguien anders, el hier mitliest, en se ausprobieren?

MfG

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



Hier veces sin dll.
Im linken Ogl-Ventana dreht lo.
Aber en el rechten Ventana normalen Screen restos lo posición , es aber a sehen.
Yo habe en Farbtiefe 32 y 16 bit probiert.
KompilierenMarcaSeparación
 $H Windows.ph
declare x1!,y1!,dx!,dy!,winkel!,groesse&,handleogl&
declare hWin&,hwin1&,hintergr&,hintergr1&,tex.auto&,adresse%,groesse%
declare width&,height&,texid&,ende&
declare bild_auto_h&,bild_umw_h&
declare bmi#,bildxy#
groesse%=128*128*4
dim bildxy#,groesse%
ende&=1
Window 20,20-800,600
Cls @RGB(220,220,220)
hWin& = Create(text, %hWnd, Test1, 10, 10, 128,128)
hWin1& = Create(text, %hWnd, Test2, 250, 20, 500,500)
oGL(Init, hwin&, 0,0, 0, 0)
oGL(PosMode, 1)
bild_auto_h& = Create(hnewPic,64,64,0 )
hintergr&=create(hnewpic,500,500,$00ffff)
hintergr1&=create(hnewpic,500,500,$000000)
tex.auto&=erzeugetex(auto.bmp)
drawogl
drawogl
oglzubmp
drawscene

WHILE ende&

    if isKey(87)

        y1!=Sin((-winkel!)/180.0*pi())*2
        x1!=Cos((-winkel!)/180.0*pi())*2
        dx!=dx!-x1!
        dy!=dy!-y1!
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(83)

        y1!=Sin((-winkel!)/180.0*pi())*2
        x1!=Cos((-winkel!)/180.0*pi())*2
        dx!=dx!+x1!
        dy!=dy!+y1!
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(81)

        winkel!=winkel!+1.0
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

    if isKey(69)

        winkel!=winkel!-1.0
        drawogl
        drawogl
        oglzubmp
        drawscene

    endif

ENDWHILE

end

proc drawogl

    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 oglzubmp

    DeleteObject handleogl&
    handleogl&=create(hPic,0,&OGLBMP )

endproc

proc drawscene

    StartPaint hintergr1&
    drawpic hintergr&,0,0;0
    drawpic handleogl&,100+dx!,100+dy!,-1 ;-1
    EndPaint
    StartPaint hwin1&
    drawpic hintergr1&,0,0;0
    EndPaint

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&       = width&
        .biHeight&      = height&
        .biPlanes%      = 1
        .biBitCount%    = 32
        .biCompression& = &BI_RGB
        .biSizeImage&   = ((.biWidth& * .biBitCount%  8 - 1) | 3 + 1) * abs(.biHeight&)

    endwith

endproc

proc erzeugetex

    parameters namebild$
    texid&=0
    height&=128
    width&=128
    dispose bmi#
    bitmap_header()
    bild_umw_h& = Create(hPic, -1, namebild$)
    ~GetDIBits(%hdc,bild_umw_h&,0,bmi#.biHeight&,bildxy#,bmi#,0)
    bmptex()
    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, height&, width&, ~GL_RGBA, ~GL_UNSIGNED_BYTE, bildxy#)
    dispose bildxy#
    RETURN texid&

endproc

proc bmptex

    adresse%=bildxy#
    P2CPP: <INLINE_CPP>
    long zaehler;
    long wert;
    unsigned char b;
    unsigned char g;
    unsigned char r;
    long adrr;
    wert=PVAR(groesse%);
    adrr=PVAR(adresse%);
    char* bereich = reinterpret_cast<char*>(adrr);
    for(zaehler = 0; zaehler <= wert; zaehler = zaehler + 4)

    {

        b=bereich[zaehler] & 255;
        g=bereich[zaehler+1] & 255;
        r=bereich[zaehler+2] & 255;

        if ((r==0) & (b==0) & (g==0))

            bereich[zaehler+3]=0;

        else

            {

                bereich[zaehler+3]=255;

            }

            bereich[zaehler+2]=b;
            bereich[zaehler]=r;

        }

        P2CPP:
span class=s2>/INLINE_CPP> ENDPROC

49 kB
Hochgeladen:27.02.2009
Ladeanzahl243
Descargar
 
27.02.2009  
 




Sebastian
König
Peter Bierbachh
Hier veces sin dll.
Im linken Ogl-Ventana dreht lo.
Aber en el rechten Ventana normalen Screen restos lo posición , es aber a sehen.
Yo habe en Farbtiefe 32 y 16 bit probiert.


Also en me zumindest es el Ergebnis igual - lo dreht se en beiden Fenstern, auch si yo el doppelten Aufrufe auskommentiere.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
27.02.2009  
 




Sebastian
König
Apéndice: Auf una otro Sistema podría Yo, el Fehler ahora reproduzieren. Yo melde mich hier otra vez, sobald Yo el Ursache gefunden habe.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
27.02.2009  
 



Imho (sólo sobrevolados) DeleteObject handleogl& beim ersten Male handleogl& sin Valor.

Besser
KompilierenMarcaSeparación
case handleogl& : DeleteObject handleogl&
>
 
27.02.2009  
 




Sebastian
König
Um Aquí el hilo abzuschließen: Der letzte Stand es, dass lo en me en una XP-Sistema en beiden Varianten (XProfan y Profano2Cpp) funktioniert, en una otro (con Vista) sin embargo grundsätzlich no. Lo scheint Así que una Problema con &OGLBMP a geben, dass no Profano2Cpp-spezifisch es... Peter ha hier [...]  una Alternative beschrieben, el siempre sicher trabajo debería.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
01.03.2009  
 




Sebastian
König
¡Hola Peter,

beim Testen uno neuen, en Deinem glReadPixels()-Ejemplo aufbauenden Variante para &OGLBMP stieß Yo vorhin en una mysteriösen Choque, el unregelmäßig auftrat. Yo mi el Ursache en Deinem C++-Code gefunden a haben: In el Línea
KompilierenMarcaSeparación debería meiner Meinung después de el <= ein einfaches < sein, sonst wird die Bereichsgrenze um einige Bytes überschritten. Da ich vermute, dass der Bug auch in der DLL steckt, wollte ich hier mal darauf hinweisen...

MfG

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




funkheld
Gracias.

Aber el Ventana en el Hauptrogramm se sólo suscrito si yo lo con ratón algo se han trasladado.

Gracias.
Gruss
 
28.04.2016  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.900 Views

Untitledvor 0 min.
H.Brill29.10.2023
funkheld14.05.2023
Georg Teles03.02.2018
Andreas Koch08.11.2016
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie