VII. Tutoriel 5. SkyBox▲
Ce tutoriel montre comment charger et afficher une skybox en utilisant une texture cube map dans OpenGL. La texture cube map est composée de six textures 2D, chacune représentant une face du cube map. Pour allouer les six textures, nous appelons la fonction glTexImage2D six fois pour chaque face. Le paramètre target de la fonction renseignera le programme sur la face à allouer parmi les six. Par exemple, pour transmettre les données depuis la mémoire centrale à la texture cube map sur l'axe X positif :
glTexImage2D (GL_TEXTURE_CUBE_MAP_POSITIVE_X,
mip_level,
internal_format,
width,
height,
border,
host_data_format,
host_data_type,
host_data_xp)
Où le premier paramètre indique à OpenGL que nous voulons envoyer les données à l'axe X positif du cube map. Les deux derniers paramètres spécifient le type et l'adresse mémoire des données de l'hôte à transférer au GPU.
Le CCacheResourceManager situé dans le framework charge et retourne la texture cube map prête à l'emploi. Notez que les six faces de la texture cube map doivent être nommées ainsi
(Nom de base + underscore + vecteur direction) :
- skyboxName_xn.jpg (ou png) ;
- skyboxName_xp.jpg ;
- skyboxName_yn.jpg ;
- skyboxName_yp.jpg ;
- skyboxName_zn.jpg ;
- skyboxName_zp.jpg.
Pour charger la skybox, donnez seulement le nom de base au gestionnaire de ressources :
CTextureCubeMap *
textureCubeMap =
crm.LoadTextureCube("skyboxName.jpg"
);
La fonction LoadTextureCube charge et transfère chaque image à la face correspondante de la texture cube map. La fonction retourne un objet texture cube map qui peut être utilisé et échantillonné par le pixel shader.