Textures
Fragment Shader
- Ajouter une variable uniform sampler2D uKdSampler, destiné à pointer sur une texture des couleurs diffuses pour l’objet en cours de rendu.
- Dans le main, utiliser la fonction GLSL texture afin de lire le sampler en utiliser les tex coords du fragment.
- Multiplier la valeur lue avec la variable uKd pour obtenir le coefficient diffus final de l’objet, à utiliser pour l’illumination
Application
A l’initialisation
- Charger deux images de votre choix à utiliser en temps que texture diffuse de chacun de nos objets (utiliser la classe glmlv::Image2DRGBA et la fonction glmlv::readImage)
- Construire deux texture objects OpenGL et envoyer les pixel des deux images chargés dans ces texture objects
- Construire un sampler object OpenGL et fixer les paramètres GL_TEXTURE_MIN_FILTER et GL_TEXTURE_MAG_FILTER à GL_LINEAR pour ce sampler
- Récuperer la location de l’uniform sampler2D uKdSampler
Au rendu
- Binder la texture sur la texture unit 0
- Binder le sampler sur la texture unit 0
Fonctions GL à utiliser:
A l’initialisation:
Sans DSA | DSA |
---|---|
glActiveTexture(GL_TEXTURE0) | |
glGenTextures | glCreateTextures |
glBindTexture(GL_TEXTURE_2D, texID) | |
glTexStorage2D | glTextureStorage2D |
glTexSubImage2D | glTextureSubImage2D |
glGenSamplers | glCreateSamplers |
glSamplerParameteri | glSamplerParameteri |
Au rendu:
Sans DSA | DSA |
---|---|
glActiveTexture(GL_TEXTURE0) | |
glUniform1i(location, 0) | glUniform1i(location, 0) |
glBindSampler(0, samplerID) | glBindSampler(0, samplerID) |
glBindTexture(GL_TEXTURE_2D, texID) | glBindTextureUnit(0, texID) |