OpenGL["noël"]

OpenGL["noël"]

  • Intro et SDK
  • Bronze
  • Silver
  • Gold
  • Blog
  • OpenGL Documentation
  • OpenGL Wiki
  • GitHub
  • My glTF Viewer Tutorial

›Forward Renderer

Introduction et SDK

  • Introduction
  • Fiche d'information
  • Projet - Un viewer glTF

Forward Renderer

  • Pipeline de Rendu
  • Geometrie
  • Shaders
  • Transformations
  • Lighting
  • Textures
  • Chargement de modèles OBJ
  • Aller plus loin

Deferred Renderer

  • Pipeline de Rendu
  • Geometrie Pass
  • Shading Pass
  • Aller plus loin

Shadow Mapping

  • Introduction
  • Directional Shadow Map
  • Percentage Closest Filtering
  • Aller Plus Loin

Post Processing

  • Introduction
  • Gamma Correction
  • Extraction et Rendu de Contours
  • Depth of Field

Annexe: API OpenGL

  • Contexte OpenGL
  • Pipeline de Rendu
  • Extensions OpenGL
  • Objets OpenGL
  • Buffer Objects
  • Vertex Array Objects
  • Texture Objects
  • Framebuffer Objects
  • Shaders

Geometrie

Vous aurez un écran noir jusqu'a la fin de la première partie de l'exercice Transformations: OpenGL demande généralement beaucoup de code d'initialisation avant de pouvoir afficher quelque chose.

Vous allez commencer par dessiner des cubes et spheres en 3D. La lib glmlv contient deux fonctions makeCube() et makeSphere() (simple_geometry.hpp) permettant de construire des tableaux de sommets et indices pour ces deux forme simple.

A l'initialisation (constructeur de Application):

  • Utiliser ces fonctions pour construire la géométrie d'une sphere et d'un cube.
  • Pour chacune de ces formes, construire un VBO, un VAO et un IBO et les remplir correctement.
  • Activer le depth test

Dans la boucle de rendu (Application::run):

  • Adapter l'appel à glClear pour aussi nettoyer le depth buffer
  • Pour chaque objet: binder le VAO, dessiner l'objet

Fonctions OpenGL à utiliser à l'initialisation:

Sans DSADSA
glGenBuffersglCreateBuffers
glGenVertexArraysglCreateVertexArrays
glBindBuffer(GL_ARRAY_BUFFER, vboID)
glBufferStorageglNamedBufferStorage
glVertexArrayVertexBuffer
glVertexArrayAttribBinding
glEnableVertexAttribArrayglEnableVertexArrayAttrib
glVertexAttribPointerglVertexArrayAttribFormat
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboID)glVertexArrayElementBuffer
glEnable(GL_DEPTH_TEST)glEnable(GL_DEPTH_TEST)

Fonctions OpenGL à utiliser au rendu:

  • glBindVertexArray
  • glDrawElements (le nombre de sommets à dessiner est le nombre d'elements dans l'indexBuffer)
  • glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

Voir le programme quad du template pour un exemple simple en 2D.

A l'initialisation du VAO, il faut utiliser pour attribut de vertex (position, normal, texCoords) un entier correspondant à la location de cet attribut dans le vertex shader. Le VS n'est pas encore écrit mais on peut déjà choisir les location (le plus simple: position en 0, normal en 1 et texCoords en 2).

← Pipeline de RenduShaders →
OpenGL["noël"]
About Me
Personal websiteGithub
About This Website
BlogopenglnoelPowered by Docusaurus
About OpenGL
Documentation (docs.gl)Wiki
Copyright © 2021 Laurent NOEL