mini3d
Le tutoriel de rendu logiciel 3D n'a aucune optimisation des performances et explique principalement aux gens comment écrire un rendu de logiciel de pipeline fixe. Bien que le code principal ne soit que de 700 lignes, le moineau est petit et a tous les organes internes.
【Readme en anglais】
caractéristiques
- Fichier unique: le code source n'a qu'un seul mini3d.c et un seul fichier implémente tout et est facile à lire.
- Compilation indépendante: aucune dépendance à la bibliothèque tierce, pas de répertoires d'ingénierie complexes.
- Modèle Norme: modèle de coordonnées D3D standard, système gauche plus mondial / vue / projection trois matrice
- Implémentation de culture: Croping CVV simple
- Prise en charge de la texture: prise en charge maximale pour 1024 x 1024 textures
- Cache de profondeur: utilisez un cache de profondeur pour déterminer l'image avant et après
- Carte de perspective: mappage de texture en perspective et remplissage de couleur de perspective
- Computer de bord: Calcul précis de la couverture du bord du polygone
- Implémentation rationalisée: le moteur de rendu n'a que 700 lignes, les modules sont clairs et l'épine dorsale est proéminente.
- Commentaires détaillés: Commentaires détaillés sur le code principal
Compilation
- Mingw: gcc -o3 mini3d.c -o mini3d.exe -lgdi32
- MSVC: CL -O2 -NOLOGO MINI3D.C
- Version compilée: https://github.com/skywind3000/mini3d/releases
Démo
Remplissation de la texture: rendu_state_texture
Remplissage des couleurs: rendu_state_color
Dessin filaire: render_state_wireframe
Augmentez l'éclairage et l'interpolation linéaire quadratique (capture d'écran de l'effet d'éclairage ajouté par un ami à Mini3D)
Devoirs de base
- Ajouter le retrait en arrière
- Ajouter une lumière simple
- Fournir plus de modes de rendu
- Implémenter la lecture de texture de la différence linéaire quadratique
Devoirs avancés
- Déduire et prouver toutes les connaissances géométriques utilisées dans le programme
- Optimiser les performances informatiques du sommet
- Optimiser les performances de Draw_scanline
- Chargement de la texture à partir du fichier BMP / TGA
- Chargez le scénario BSP et implémentez l'itinérance
Explication principale
- Wei Yixiao: Comment OpenGL et DirectX obtiennent-ils des emplacements de pixels alors que seuls les sommets sont connus?
- Wei Yixiao: Comment l'ordinateur accède-t-il à la carte graphique?
Projets connexes
- RenderHelp: Une autre implémentation de rendu soft rationalisé qui prend en charge les pipelines de rendu programmables, voir l'introduction pour plus de détails.
Les dons sont les bienvenus
Votre don est la plus grande affirmation de ce tutoriel. Le don sera utilisé pour améliorer la documentation et les légendes du tutoriel, ainsi que pour m'aider à écrire des tutoriels plus intéressants.
Bienvenue à suivre
Blog: https://skywind.me/blog
zhihu: https://www.zhihu.com/people/skywind3000