Español
Fuente/ Codesnippets

OpenGL Licht

 

Sven
Bader
Um Características y Positionierung de Licht en OpenGL a verstehen, musste Yo me sólo visualisieren. Das Ergebnis teile Me gusta con euch.

Hay unos pocos API Aufrufe esta, es aber alles muy überschaubar mantenido.

Mi Top 3 Learnings waren:
- Glanzlichter son doch nada así schwer
- Platzierung de Licht es unbeeindruckt de Pushs y Pops
- El Lichtgenauigkeit es direkt de el Dreiecksanzahl abhängig


 $H OpenGL.ph
declarar time&, frames%
declarar rtri!, light#
declarar white#,red#, green#,blue#, zero#, list&,loop&
dim light#,16
dim white#,16
dim red#,16
dim green#,16
dim blue#,16
dim zero#,16
FloatArray(white#,1,1,1,1)
FloatArray(red#,1,0,0,1)
FloatArray(green#,0,1,0,1)
FloatArray(blue#,0,0,1,1)
FloatArray(zero#,0,0,0,1)
FloatArray(light#,-0.05,-0.05,-0.05, 1.0)

PROC GRID

    'Lo son bessere Möglichkeiten, Gitter a redactar aber para dieses Ejemplo reicht lo, una einzelner Quad sería
    'no vernünftig beleuchtet voluntad (siehe Würfel) "per-vertex lighting"
    parámetros size!, resolution!

    if list& = 0

        list& = ogl("StartList")
        oGL("Move", -(size! * 0.5)-(size! / resolution! * 0.5),(size! * 0.5)-(size! / resolution! * 0.5), 0)

        whileloop 1, int(resolution!)

            oGL("Move", (size! / resolution!),-size!, 0)
            loop& = &bucle

            whileloop 1, int(resolution!)

                if ((&bucle + loop&) MOD 2) = 0

                    oGL("Color", 0.2,0.2,0.2,1.0)

                más

                    oGL("Color", 1.0,1.0,1.0,1.0)

                endif

                oGL("Move", 0.0, (size! / resolution!), 0)
                oGL("Quad", (size! / resolution!),(size! / resolution!))

            endwhile

        endwhile

        ogl("EndList")

    endif

    ogl("Drawlist", list&)

ENDPROC

Proc Light

    'A mejor Veranschaulichung en Proc gekapselt, si en Performance va nimmt uno una fertigen Zona,
    'Definition de allem de Position sería auch una vez en Initialisierung reichen, el Objeto dient el Visualisierung
    'el Lichtposition. Das Grundlicht (Ambient) es ligeramente negativo gesetzt como lo de irgendeinem Grund en "0" todavía algo
    'Licht son
    parámetros no&, r!, g!, b!
    declarar color#
    dim color#, 16
    FloatArray(color#,r!, g!, b!, 1.0)
    oGL("glMaterialfv", ~GL_FRONT_AND_BACK, ~GL_EMISSION, color#)
    oGL("Color", r!, g!, b!, 1.0)
    oGL("Cuboid", 0.15, 0.15, 0.15)
    oGL("glMaterialfv", ~GL_FRONT_AND_BACK, ~GL_EMISSION, zero#)
    oGL("glLightfv",~GL_LIGHT0 + no&,~GL_AMBIENT,light#)'GL_AMBIENT
    oGL("glLightfv",~GL_LIGHT0 + no&,~GL_DIFFUSE, color#)' GL_DIFFUSE
    oGL("glLightfv",~GL_LIGHT0 + no&,~GL_POSITION,zero#)' GL_POSITION
    oGL("glLightfv",~GL_LIGHT0 + no&,~GL_SPECULAR, white#)' GL_SPECULAR
    oGL("glEnable",~GL_LIGHT0 + no&)
    disponer color#

ENDPROC

proc DrawGLScene

    oGL("Clear")
    oGL("Move", 0, 0.75, -5.0)
    oGL("glMaterialfv",~GL_FRONT_AND_BACK, ~GL_SPECULAR, white#)' Glanzlichtfarbe
    oGL("glMaterialf", ~GL_FRONT_AND_BACK, ~GL_SHININESS,128.0)' Glanzlichtgröße (große Zahl es kleiner, max 128.0)
    oGL("glDisable",~GL_LIGHT0)'Default Licht de
    '-------
    'Lichtpositionen dejar se no por Push/Pop kapseln!
    'Jegliche Positionierung muss also danach otra vez negiert voluntad, en Rotationen achsenweise
    'y alles siempre en umgekehrter Reihenfolge - una Aufnahme su en el Light()-Función wäre denkbar
    'LICHTER
    oGL("Rotate",0,0, rtri!)
    oGL("Move", 2.0, 0,0)
    'Light(Lichtnummer, Rot, Grün, Blau)
    Light(1,1,0,0)' rot
    oGL("Move", -2.0, 0,0)
    oGL("Rotate", 0,0,-rtri!)
    oGL("Rotate",0,90,0)
    oGL("Rotate",0,0, rtri!)
    oGL("Move", 2.0, 0,0)
    Light(2,0,1,0)' grün
    oGL("Move", -2.0, 0,0)
    oGL("Rotate", 0,0,-rtri!)
    oGL("Rotate", 0,-90,0)
    oGL("Rotate", 0, rtri!,0)
    oGL("Move", 2.5, 0,0)
    Light(3,0,0,1)' blau
    oGL("Move", -2.5, 0,0)
    oGL("Rotate", 0, -rtri!,0)
    'OBJEKTE
    oGL("Color", 1, 1, 1, 1)
    'algo en el gegen herumschauen:
    oGL("Rotate",sin(rtri!*0.01) * 10.0, sin(rtri!*0.01) * 20.0, sin(rtri!*0.01) * 5.0)
    oGL("Push")'Boden
    oGL("Move", 0, -2.2, -4)
    oGL("Rotate",270, 0,0)
    GRID(20,40)
    oGL("Pop")
    oGL("Push")'Würfel, sólo muy eingeschränktes Lighting
    oGL("Move", -0.65, 0.5, 0)
    oGL("Rotate", -45, 45, 0)
    oGL("Cuboid", 0.75, 0.75,0.75)
    oGL("Pop")
    oGL("Push")'Kugel, con vielen Dreiecken siehts correcto bien de
    oGL("Move", 1, 0, 0)
    oGL("Sphere", 0.65, 192,192)
    oGL("Pop")
    oGL("Push")'Kegel / Cone
    oGL("Move", 2.5, -1.5, -1.0)
    oGL("Cylinder", 1.0, 0,2.0,192)
    oGL("Pop")
    oGL("Push")'Cylinder, sieht auch con wenigen Unterteilungen ya bien de
    oGL("Move", -2.0, -0.5, -1.5)
    oGL("Rotate", -15, -30, 30)
    oGL("Cylinder", 0.20, 0.20,4,30)
    oGL("Pop")
    oGL("Show")
    rtri! = rtri! + 1

ENDPROC

Proc FloatArray

    parámetros x&,a!,b!,c!,d!
    long x&,0  = single(a!)
    long x&,4  = single(b!)
    long x&,8  = single(c!)
    long x&,12 = single(d!)

ENDPROC

' Hauptprogramm
' -------------
declarar ende%
CLS 0
oGL("Init", %hWnd, 0,0,0,1)
oGL("PosMode", 1)
oGL("glEnable",~GL_CULL_FACE)
oGL("glEnable",~GL_DEPTH_TEST)
oGL("BlendMode", 1)
oGL("Fog", 3, 6, 14)
time&   = &GetTickCount
frames% = 0
ende%   = 0

Sinestar encargado ende%

    'WaitInput debería en 3D-Anwendungen y Spielen en cada Fall vermieden voluntad,
    'como hay auch sin timer ca. 8 ms unkontrollierbar verschwinden

    if isKey(27)

        ende% = 1

    endif

    DrawGLScene()
    inc frames%

    if &GetTickCount - time& >= 1000' 1 Sekunde es 'rum

        setText %hWnd, str$(frames%) + " Frames/sek"
        time&   = &GetTickCount
        frames% = 0

    endif

EndWhile

end

115 kB
Bezeichnung:Licht
Hochgeladen:05.08.2021
Ladeanzahl75
Descargar
 
05.08.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.552 Views

Untitledvor 0 min.
Sven Bader01.02.2023
Walter28.11.2022
Ernst29.05.2022
Stringray05.01.2022
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