Français
Source/ Codesnippets

OpenGL Render-To-Texture

 

Sven
Bader


Hierfür habe je une Weile gebraucht, là es aucun Dokumentationen pour den Funktionsumfang de OpenGL dans XProfan gibt. je suis tour, aussi Zugriff sur akuellere OpenGL Funktionen trop conservé, jusqu'à dahin mais ici cela oldschool Beispiel

normalement löst on cela Rendern sur une Textur per glBindFramebuffer, je vais den le détour sur glReadPixels et weise qui dans chaque Frame qui Textur trop.

Um avec cette technologie Szenen trop spiegeln comment z.B. sur einer Wasseroberfläche bräuchte es pour meinem Verständnis folgendes: caméra dans gleichem la distance et umgekehrten Winkel sous qui spiegelnde surface, Textur comme Projektion - letzteres habe je selbst encore pas korrekt hinbekommen.
Déclarer tex&[5]
Déclarer xrot!, yrot!, zrot!, xpos!, ypos!, zpos!,xsrot!,ysrot!,zsrot!,xspos!,yspos!,zspos!
Déclarer smooth%,mb&,mousestartx%,mousestarty%,mousex%,mousey%
Déclarer ende%,hPic&
Déclarer x&, y&, bytes&,mem#,size&,mem&,light#,t&,fps&,mod&

Proc MouseKeyboard

    mousex% = %MouseX
    mousey% = %MouseY

    si mb& = 0

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

    endif

    si (not(isKey(2)) & not(isKey(1)))

        'Startposition pour rotieren et Zoomwen wieder nullen
        mb& = 0
        mousestartx% = %mousex
        mousestarty% = %mousey
        xsrot! = xrot!
        ysrot! = yrot!
        zspos! = zpos!

    endif

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

    si (mb& = 1)

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

    endif

    'Mauszoom

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

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

    endif

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

ENDPROC

declare txID&

Proc DrawGLScene

    'Szene pour 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)'Objekte qui Taille "1" sommes ici exakt so hoch comment qui 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 dans grenier poser
    oGL("glReadPixels", 210,20,520,520,~GL_RGB,~GL_UNSIGNED_BYTE,mem#)
    'Textur erstellen, aus Perfomancegründen, aucunement 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 et Montrer
    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
' -------------
style de fenêtre 1+2+4+8+16
windowtitle "render to texture"
window (%maxx *  0.5 -480), (%maxy *  0.5 - 300) - 960,600'kompatible Schreibweise
UseIcon "Gesicht"
Faible mem#, 520*520*3'x * y * bpp
'oGL iitialisieren, Textur vorbereiten
oGL("Init", %hWnd, 1,1,1,1)
oGL("PosMode",1)
oGL("glEnable", ~GL_CULL_FACE)
ogl("glGenTextures",1,addr(txID&))
'quelque chose plus 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

WhileNot ende%

    MouseKeyboard()
    DrawGLScene()

Endwhile

oGL("Done")
Fin

42 kB
Bezeichnung:render2texture
Hochgeladen:03.09.2021
Downloadcounter72
Download
 
03.09.2021  
 



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

1.462 Views

Untitledvor 0 min.
H.Brill29.10.2023
Sven Bader01.02.2023
Ernst29.05.2022
p.specht18.11.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

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