OpenTK Lighting

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    OpenTK Lighting

    Hi,
    Ich bin gerade dabei in mein 3D-Programm Lighting einzubauen. Jedoch funktioniert das nicht. Keine Exceptions, nichts. Er Rendert einfach kein Licht...
    Mein Code:

    VB.NET-Quellcode

    1. Protected Overrides Sub OnRenderFrame(e As FrameEventArgs)
    2. GLStateManager.InitViewport()
    3. ApplyCamera()
    4. GL.Clear(ClearBufferMask.ColorBufferBit Or ClearBufferMask.DepthBufferBit)
    5. Dim projection As Matrix4
    6. GL.GetFloat(GetPName.ProjectionMatrix, projection)
    7. Dim modelview As Matrix4
    8. GL.GetFloat(GetPName.ModelviewMatrix, modelview)
    9. theFrustum.CalculateFrustum(projection, modelview)
    10. GL.Enable(EnableCap.Texture2D)
    11. Dim light_position As Single() = {thePlayer.posZ, thePlayer.posY, thePlayer.posZ}
    12. GL.ShadeModel(ShadingModel.Smooth)
    13. GL.Light(LightName.Light0, LightParameter.Position, light_position)
    14. GL.Enable(EnableCap.Lighting)
    15. GL.Enable(EnableCap.Light0)
    16. GL.Enable(EnableCap.ColorMaterial)
    17. worldRenderer.Render()
    18. ParticleFX.RenderAll()
    19. GL.Disable(EnableCap.Texture2D)
    20. GL.Disable(EnableCap.Light0)
    21. GL.Disable(EnableCap.Lighting)
    22. RenderHitResult()
    23. Render2D()
    24. SwapBuffers()
    25. End Sub


    Ich hoffe, ihr könnt mir damit helfen, hab bei Google auch nix gefunden

    LG
    Twometer
    An Error 404 occurred while loading signature...
    Du wirst deinen ganzen Code wegschmeißen müssen. Die fixed pipeline verwendet man schon lange nicht mehr.

    Deine Matrizen wirst du dir immer irgendwo als variablen halten und nicht aus der gpu auslesen (gl.getfloat)

    Bau alles um, sodass du simple shader verwenden kannst. Gl.loadmatrix und konsorten wirst du dann auch nicht mehr verwenden, sondern deine daten an den shader senden (glUniform z.b)
    Wenn das ganze funktioniert, wird man das licht ebenfalls im shader selbst implementieren.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---