Español
Fuente/ Codesnippets

OpenGL Render-To-Texture

 

Sven
Bader


Hierfür Yo una Weile gebraucht, como lo no Dokumentationen para el Funktionsumfang de OpenGL en XProfan son. Yo bin dran, auch Zugriff en akuellere OpenGL Características a obtener, a dahin aber hier el oldschool Ejemplo

Normalerweise löst al Rendern en una Textur por glBindFramebuffer, Yo gehe el Umweg encima glReadPixels y weise el en cada Frame el Textur a.

Um con dieser Technik Szenen a spiegeln como z.B. en uno Wasseroberfläche bräuchte lo después de mi Verständnis folgendes: Kamera en gleichem Abstand y umgekehrten Winkel bajo el spiegelnde Oberfläche, Textur como Projektion - letzteres Yo incluso todavía no korrekt hinbekommen.
Declarar tex&[5]
Declarar xrot!, yrot!, zrot!, xpos!, ypos!, zpos!,xsrot!,ysrot!,zsrot!,xspos!,yspos!,zspos!
Declarar smooth%,mb&,mousestartx%,mousestarty%,mousex%,mousey%
Declarar ende%,hPic&
Declarar x&, y&, bytes&,mem#,size&,mem&,light#,t&,fps&,mod&

Proc MouseKeyboard

    mousex% = %MouseX
    mousey% = %MouseY

    if mb& = 0

        caso isKey(1) : mb& = 1
        caso isKey(2) : mb& = 2

    endif

    if (not(isKey(2)) & not(isKey(1)))

        'Startposition fürs rotieren y Zoomwen otra vez nullen
        mb& = 0
        mousestartx% = %mousex
        mousestarty% = %mousey
        xsrot! = xrot!
        ysrot! = yrot!
        zspos! = zpos!

    endif

    'Tastaturrotation
    caso isKey(37)  : yrot! = yrot! - 1.0
    caso isKey(39) : yrot! = yrot! + 1.0
    caso isKey(38)    : xrot! = xrot! + 1.0
    caso isKey(40)  : xrot! = xrot! - 1.0
    'Mausrotation

    if (mb& = 1)

        yrot! = ysrot! - (mousestartx% - %mousex) * 0.4
        xrot! = xsrot! - (mousestarty% - %mousey) * 0.4

    endif

    'Mauszoom

    if (mb& = 2) & (abs(mousestarty% - %mousey) > 10)

        zpos! = zspos! + (mousestarty% - %mousey) * 0.03

    endif

    'Sonstige Tastatureingaben
    caso IsKey(27) : Ende% = 1

ENDPROC

declarar txID&

Proc DrawGLScene

    'Szene para Textur rendern (roter Würfel)
    oGL("glClearColor",1.0,1.0,0.0,1.0)
    oGL("glClear", ~GL_COLOR_BUFFER_BIT | ~GL_DEPTH_BUFFER_BIT)
    ogl("Origin",0,0,-0.2)'Objetos el Größe "1" son hier exakt así hoch como el Viewport
    oGL("Move", xpos!, ypos!, zpos!)
    oGL("Rotate", xrot!,yrot!,zrot!)
    oGL("Texture",0, 1)
    oGL("Color", 1,0,0,1)
    ogl("Cuboid",2,2,2)
    'Screenshot en Speicher legen
    oGL("glReadPixels", 210,20,520,520,~GL_RGB,~GL_UNSIGNED_BYTE,mem#)
    'Textur redactar, de Perfomancegründen, keinesfalls Mipmaps
    ogl("glBindTexture",~GL_TEXTURE_2D,txID&)
    ogl("glTexEnvi",~GL_TEXTURE_ENV, ~GL_TEXTURE_ENV_MODE, ~GL_MODULATE)
    ogl("glTexImage2D",~GL_TEXTURE_2D,0,~GL_RGBA,520, 520,0,~GL_RGB,~GL_UNSIGNED_BYTE,mem#)
    ogl("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MAG_FILTER, ~GL_LINEAR)
    ogl("glTexParameteri",~GL_TEXTURE_2D, ~GL_TEXTURE_MIN_FILTER, ~GL_LINEAR)
    'Sichtbare Szene rendern y Mostrar
    oGL("glClearColor",1.0,1.0,1.0,1.0)
    oGL("glClear", ~GL_COLOR_BUFFER_BIT | ~GL_DEPTH_BUFFER_BIT)
    oGL("Texture",txID&, 1)
    oGL("Color", 1,1,1,1)
    ogl("Cuboid",2,2,2)
    oGL("Show")

ENDPROC

' Hauptprogramm
' -------------
windowstyle 1+2+4+8+16
windowtitle "render to texture"
window (%maxx *  0.5 -480), (%maxy *  0.5 - 300) - 960,600'kompatible Schreibweise
UseIcon "Gesicht"
Dim mem#, 520*520*3'x * y * bpp
'oGL iitialisieren, Textur preparar
oGL("Init", %hWnd, 1,1,1,1)
oGL("PosMode",1)
oGL("glEnable", ~GL_CULL_FACE)
ogl("glGenTextures",1,addr(txID&))
'Etwas mehr Licht!
dim light#,16
long light#,0  = single(0.5),single(0.5),single(0.5),single(1.0)
oGL("glLightfv",~GL_LIGHT0 ,~GL_AMBIENT,light#)'GL_AMBIENT
'Startposition
zpos! = -5
xrot! = 0
yrot! = 0

Sinestar encargado ende%

    MouseKeyboard()
    DrawGLScene()

EndWhile

oGL("Done")
End

42 kB
Bezeichnung:render2texture
Hochgeladen:03.09.2021
Ladeanzahl72
Descargar
 
03.09.2021  
 



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

1.452 Views

Untitledvor 0 min.
H.Brill29.10.2023
Sven Bader01.02.2023
Ernst29.05.2022
p.specht18.11.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Sven Bader (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