le sujet est assez vieux, mais je vais le répondre pour tout débutant qui pourrait demander une aide ici:
1) & 2)
votre carte normale est comme une texture régulière diffuse, vous besoin de le charger à partir du disque, créez votre texture2D comme vous le feriez avec une texture diffuse, et le verrouiller avec les autres textures pour l'envoyer aux shaders. Donc, pour résumer, les cartes normales, les cartes de hauteur, etc. ne sont pas différentes lorsque vous les manipulez côté CPU ... elles les chargent toujours, créent la texture et les verrouillent.
3)
cartes normales sont juste un moyen de stocker Normales de chaque fragment dans une texture. Il est préférable de les utiliser avec la texture diffuse correspondante, car c'est ainsi que vous fausserez les petits détails. Néanmoins, ce n'est pas toujours nécessaire dans certains cas ... par exemple, la dernière fois que je travaillais sur un moyen de rendre l'eau ... J'ai utilisé une carte dudv, et une carte normale, mais pas la carte diffuse correspondante. utilisé pour rendre dans les textures pour atteindre la réflexion.
4)
cartes normales sont mises en correspondance avec la même texture que les coordonnées de la texture diffuse ... cela signifie que si vous avez une coordonnées Wich quad sont 0, 0, 0, 1, 1, 0, 1; 1 ce sont les coordonnées que vous utilisez pour mapper les deux textures.
5)
vous pouvez le faire sans shaders, je suppose ... vous pouvez même le faire sans OpenGL si vous voulez ... shaders sont conçus pour ce genre d'opérations, et il sera plus facile de fais ça avec les shaders.Ainsi, les cartes normales sont des textures qui codent des vecteurs normaux en couleurs ... un vecteur normal est un vecteur 3D et les couleurs sont également des vecteurs 3D. Lorsque vous utilisez l'éclairage, vous envoyez habituellement vos normales du vertex shader au fragment shader ... le fragment shader va interpoler la valeur du vertex normal pour trouver une approximation du propre vecteur normal du pixel. cela est fait par défaut ...
Avec les cartes normales, vous n'utilisez pas un vecteur normal de sommet, mais le vecteur normal codé dans la texture. D'abord, vous devrez convertir le calcul d'éclairage de l'espace du monde en espace tangent. Cela se fait dans le vertex shader. Ensuite, vous allez échantillonner votre carte normale dans le fragment shader comme une texture habituelle. Vous obtiendrez une couleur RVB de votre pixel. vous devrez convertir cette valeur en un vecteur normal, c'est-à-dire la multiplier par 2 et soustraire 1, c'est-à-dire, rgb * 2 - 1, puis l'utiliser comme vecteur normal dans le calcul d'éclairage.
Merci, la présentation nVidia et les 3DKingdoms sont super. J'ai vu un paulsprojects un, mais j'étais perdu quand il a commencé sur des cartes de cube. – zyndor