Español
Fuente/ Codesnippets

Damit Ersten Glreadpixels Mi Versuche

 
Erste Anfängerversuche con "glReadPixels" de me.

Mit diesem Befehl
KompilierenMarcaSeparación
"ogl("glReadPixels",x,y,xw,yh+,~GL_RGBA,~GL_UNSIGNED_BYTE,bereich#) "
>
puede ser
en el Zusammenhang con
KompilierenMarcaSeparación
"ogl("glReadBuffer",~GL_Front)"
>
el Openglfenster como Grafikbild en un
Bereichsvariable reinpacken y auswerten para evtl Collisionen, primero en me en 2D, oder Mostrar, como en el Demo. El Auswahl es el Fontbuffer oder el Backbuffer.

x y y es el Punkt en el OpenGL-Ventana de wo de el Breite xw y el Höhe yh en el Bereichsvariable eingelesen se. Ein Punkt entspricht 4 Byte (RGBA), entsprechend muss el Bereichsvariable creado voluntad. Desde que una Bild de 128x128 Pixel habe , Es el Bereichsvariable en me 128*128*4.

Yo habe en me una OpenGlFenster de 350x350 Pixel.
Mein Bild lese Yo en x=140 y y=140 de , con uno Breite de 128 y uno Höhe de 128 , en lo simplemente a halten en para media Intento no neue
KompilierenMarcaSeparación
"bild_h& = Create("hPic", -1, namebild$)"
>
anzulegen. Gewählt Yo el Backbuffer.

Mit diesem Befehl : ~setDIBits(%hdc,bild_h&,0,bmi#.biHeight&,bereich#,bmi#,0) lese Yo el Bild en el Handle bild_h& una, uno kann auch hier otra vez una más Handle con "bild_h& = Crear("HPIC", -1, namebild$)" invertir. Das blanco Todavía no, cómo hacer un Handle festlegt con Crear sin una BMP(Bild) reinzusetzen. Und mache dieses Bild de "glReadPixels" en el Ventana principal links(no OpenGlFenster) sichtbar con "drawpic bild_h&,10,10,0".

Vorher necesario auch otra vez 2 BMP-Bilder creado voluntad, una vez el Hintergrund y una vez una Objeto para Steuern. XPIA muss auch otra vez aktiviert voluntad.

Bitte esta Demo con neuen Ideen bestücken, tal vez habt ihr todavía wesentlich bessere Einfälle en dieses auszubauen. Diese Demo es sólo una I-Tüpflelchen, es veces una Concepto, el al Anfang es.

El Farben son todavía vertauscht vom Bild "glReadPixels", porque esta andersherum leerse.
KompilierenMarcaSeparación
 $H Windows.ph

If 0

    AsmStart rgb_umwandlung

        Parameters bildxy#,a&
        LOCAL r :BYTE
        LOCAL g :BYTE
        LOCAL b :BYTE
        LOCAL w :DWORD
        mov eax,para2
        mov w,eax
        mov ecx,0
        mov ebx,para1

        .while ecx<=w

            mov al,[ebx+ecx]
            mov b,al
            mov al,[ebx+ecx+1]
            mov g,al
            mov al,[ebx+ecx+2]
            mov r,al
            and b,255
            and g,255
            and r,255
            mov al,b

            .if al>0

                jmp wandle

            .endif

            mov al,g

            .if al>0

                jmp wandle

            .endif

            mov al,r

            .if al>0

                jmp wandle

            .endif

            mov al,0
            mov [ebx+ecx+3],al
            mov al,b
            mov [ebx+ecx+2],al
            mov al,r
            mov [ebx+ecx],al
            jmp weiter
            wandle:
            mov al,255
            mov [ebx+ecx+3],al
            mov al,b
            mov [ebx+ecx+2],al
            mov al,r
            mov [ebx+ecx],al
            weiter:
            add ecx,4

        .endw

    AsmEnd

EndIf

declare bild1$
declare x1!,y1!,dx!,dy!,winkel!
declare hWin&
declare width%,height%
declare bild_h&,a&
declare bmi#,bildxy# ,ogl_rgb#
var groesse%=128*128*4
dim ogl_rgb#,groesse%
var texid%=0
Window 20,20-600,450
Cls @RGB(220,220,220)
hWin& = @Create("text", %hWnd, "Test1", 220, 10, 350, 350)
oGL("Init", hwin&, 0,0, 0, 0)
oGL("PosMode", 1)
bild1$="auto.bmp"
var tex.auto%=erzeugetex(bild1$)
var tex.grund%=OGL("loadtexturebmp","tile1.bmp",3)
var ende%=1

WHILE ende%

    sleep 1

    if isKey(65)

        ende% = 0

    endif

    if isKey(81)

        winkel!=winkel!+0.4

    endif

    if isKey(69)

        winkel!=winkel!-0.4

    endif

    if isKey(87)

        y1!=Sin(winkel!/180.0*pi())*0.02
        x1!=Cos(winkel!/180.0*pi())*0.02
        dx!=dx!-x1!
        dy!=dy!-y1!

    endif

    if isKey(83)

        y1!=Sin(winkel!/180.0*pi())*0.02
        x1!=Cos(winkel!/180.0*pi())*0.02
        dx!=dx!+x1!
        dy!=dy!+y1!

    endif

    ogl("glReadBuffer",~GL_Back)
    ogl("glReadPixels",140,140,128,128,~GL_RGBA,~GL_UNSIGNED_BYTE,ogl_rgb#)
    ~setDIBits(%hdc,bild_h&,0,bmi#.biHeight&,ogl_rgb#,bmi#,0)
    drawpic bild_h&,10,10,0
    drawglscene()

ENDWHILE

proc drawglscene

    OGL("Clear")
    OGL("move",0,0,-3)
    OGL("texture",tex.grund%,10)
    OGL("move",0,0,0)
    OGL("quad",8,8)
    OGL("origin",dx!,dy!,-3)
    OGL("texture",tex.auto%,1)
    OGL("rotate",0,0,winkel!)
    OGL("quad",0.7,0.7)
    OGL("show")

endproc

proc erzeugetex

    parameters namebild$
    mcls 0,0,0
    startpaint -1
    mloadbmp namebild$,0,0
    endpaint
    height%=%bmpx
    width%=%bmpy
    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

    bild_h& = Create("hPic", -1, namebild$)
    a&=bmi#.biSizeImage&
    dim bildxy#,a&
    ~GetDIBits(%hdc,bild_h&,0,bmi#.biHeight&,bildxy#,bmi#,0)
    Call(xpia_getprocaddressm(xpia_hmodule&,"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, height%, width%, ~GL_RGBA, ~GL_UNSIGNED_BYTE, bildxy#)
    dispose bmi#
    disponer bildxy#
    RETORNO texid%

ENDPROC

 
20.08.2008  
 



Posesiones una solución a el vacío Handle gefunden :

declarar bild_h1&

mcls 128,128,0
bild_h1& = Crear("HPIC", 0,"& MEMBMP" )

Jetzt necesario esta beiden Befehle así bestückt voluntad :

~setDIBits(%hdc,bild_h1&,0,128,ogl_rgb#,bmi#,0)

drawpic bild_h1&,10,10,0

Weiterhin el richtigen Parámetro gefunden, así el Farben no vertauscht voluntad :

~GL_BGRA en lugar de ~GL_RGBA , also:

ogl("glReadPixels",140,140,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#)

mfg
 
20.08.2008  
 



Der Hilo es "hier" bajo Programas aber falso abgelegt, una Admin Por favor, mover.
 
20.08.2008  
 



Zum Quelltext


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

4.666 Views

Untitledvor 0 min.
funkheld27.04.2016
Julian Schmidt16.06.2012

Themeninformationen

Dieses Thema ha 2 subscriber:

unbekannt (2x)
iF (1x)


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