Français
Source/ Codesnippets

avec cela Ersten Glreadpixels mon Versuche

 
Erste Anfängerversuche avec "glReadPixels" de mir.

avec diesem Befehl
KompilierenMarqueSéparation
"ogl("glReadPixels",x,y,xw,yh+,~GL_RGBA,~GL_UNSIGNED_BYTE,bereich#) "
>
peux on
im Zusammenhang avec
KompilierenMarqueSéparation
"ogl("glReadBuffer",~GL_Front)"
>
cela Openglfenster comme Grafikbild dans un
Bereichsvariable reinpacken et auswerten pour peut-être Collisionen, erstmal chez mir dans 2D, ou bien Montrer, comment dans qui Demo. qui sélection ist qui Fontbuffer ou bien qui Backbuffer.

x et y ist qui Punkt im OpenGL-la fenêtre de wohin aus qui Breite xw et qui Hauteur yh dans qui Bereichsvariable lire wird. un Punkt entspricht 4 Byte (RGBA), entsprechend muss qui Bereichsvariable angelegt volonté. là je un Bild de 128x128 Pixel habe , ist qui Bereichsvariable chez mir 128*128*4.

j'ai chez mir un OpenGlFenster de 350x350 Pixel.
mon Bild lese je chez x=140 et y=140 aus , avec einer Breite de 128 et einer Hauteur de 128 , um es simple trop tenir um pour meinen Versuch aucun neue
KompilierenMarqueSéparation
"bild_h& = Create("hPic", -1, namebild$)"
>
anzulegen. Gewählt habe Je l' Backbuffer.

avec diesem Befehl : ~setDIBits(%hdc,bild_h&,0,bmi#.biHeight&,bereich#,bmi#,0) lese je cela Bild dans cela Handle bild_h& un, il peut aussi ici wieder un d'autre Handle avec "bild_h& = Créer(«PCSI», -1, namebild$)" anlegen. cela weiss je encore pas, comment on un Handle festlegt avec Créer sans une BMP(Bild) reinzusetzen. et fais cet Bild de "glReadPixels" sur dem Hauptfenster à gauche(pas OpenGlFenster) sichtbar avec "drawpic bild_h&,10,10,0".

auparavant doit aussi wieder 2 BMP-Bilder angelegt volonté, einmal den Hintergrund et einmal un objet zum Steuern. XPIA muss aussi wieder aktiviert volonté.

s'il te plaît cet Demo avec neuen idées bestücken, peut-être avez son encore wesentlich bessere Einfälle um cet auszubauen. cet Demo ist seulement un I-Tüpflelchen, ist la fois une concept, qui am Anfang steht.

qui Farben sommes encore vertauscht vom Bild "glReadPixels", weil cet andersherum lire volonté.
KompilierenMarqueSéparation
 $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#
    dispose bildxy#
    RETOUR texid%

endproc

 
20.08.2008  
 



Habe une Solution pour cela le vide Handle trouvé :

declare bild_h1&

mcls 128,128,0
bild_h1& = Créer(«PCSI», 0,"& MEMBMP" )

maintenant doit cet beiden Befehle avec cela bestückt volonté :

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

drawpic bild_h1&,10,10,0

Weiterhin den richtigen paramètre trouvé, avec cela qui Farben pas vertauscht volonté :

~GL_BGRA statt ~GL_RGBA , alors:

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

mfg
 
20.08.2008  
 



qui Fil ist "hier" sous Programme mais faux abgelegt, un Admin s'il te plaît Déplacer.
 
20.08.2008  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.649 Views

Untitledvor 0 min.
funkheld27.04.2016
Julian Schmidt16.06.2012

Themeninformationen

cet Thema hat 2 participant:

unbekannt (2x)
iF (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie