2009-06-07 14 views

Répondre

1

Si vous ne pouvez pas utiliser OpenGL (ou Direct3D), vous devrez probablement écrire votre propre rasterizer. Je vais aussi souligner que c'est une idée terrible, et si vous pouvez utiliser OpenGL ou Direct3D alors vous économiserez énormément de travail, même si c'est vraiment difficile de faire fonctionner ces choses avec votre application. Oui, vous pouvez utiliser OpenGL ou Direct3D pour effectuer un rendu dans une texture sans créer de contexte à l'écran. Du point de vue théorique, vous appliquez une projection en perspective (cherchez ce terme) à chacun des points de votre carré. C'est chaque point, pas seulement les coins mais tous les points entre. Les gens trouvent la distorsion acceptable si vous appliquez simplement la transformation aux quatre points, habituellement, alors nous faisons cela à la place. Une fois vos points 3D transformés en points 2D à l'aide d'une transformation de perspective, vous dessinez le polygone en copiant les pixels de votre texture dans votre contexte de destination. Vous voudrez faire une boucle sur chaque pixel de la destination et calculer le pixel source qui s'y trouve. Si elle ne tourne que sur l'axe X tel qu'il apparaît dans l'image, vous facilitez les choses car chaque ligne de la destination correspond à une ligne de la source. Wolfenstein a exploité la même astuce (sauf sur l'axe Y) pour le rendu de la perspective en temps réel sur un 286, Doom l'a fait aussi.

Si vous voulez toujours continuer mais que vous ne savez pas ce que je veux dire, cherchez un de ces vieux livres qui vous dit comment créer votre propre Doom-clone. Ces livres ont le code que vous cherchez. Un ou deux est maintenant disponible en ligne, allez au this wiki et cherchez "L'art noir de la programmation de jeux en 3D" ou "Les trucs des gourous de la programmation de jeux Windows". Un ou deux autres pourraient être là.

Questions connexes