Question

Je suis actuellement implémenté mon propre en utilisant l'algorithme renderer Z-tampon. Une fois que je l'ai fait les calculs nécessaires (lire: Mon Z-buffer est rempli avec les valeurs correctes) J'utilise SDL à la couleur dans les pixels nécessaires. J'utilise un HWSURFACE pour cela.

Ma question est, comment puis-je rendre ce aussi vite que possible? Avec cela, je veux dire le dessin lui-même, je peux faire dans ma structure Optimisations, mon algorithme, je le ferai plus tard, mais je veux être sûr que le dessin lui-même est aussi rapide que possible.

Parce que j'ai ma propre mise en œuvre d'un ZBuffer (et il y aura d'autres algorithmes plus tard) je ne peux pas utiliser OpenGL, sont donc il des alternatives?

Maintenant, je vais juste au-dessus de tous mes points dans le tampon z et je dessine tous les pixels qui doivent être tirés, un par un (et parce qu'il est le z-buffer, je dois le faire, non?) Et J'appelle une méthode DrawPixel. En ce qui concerne SDL je fermerai ma surface avant d'aller sur le z-buffer, tirer tous les pixels et le débloquer par la suite, cela ne peut pas aller plus vite pour autant que je sache.

Toutes les suggestions?

Était-ce utile?

La solution

implémentations logicielles sont incroyablement lente qui, WARP rend Crysis sur un hexacore Core i7 à un dixième du FPS qu'un 8800GT fait. Vous ne trouverez pas de performance compétitive dans un Z-buffer mis en œuvre logicielle.

Un Z-tampon n'est pas un algorithme particulièrement complexe et il est assez peu probable que vous trouverez une implémentation qui est plus efficace qu'un autre. Z-tampon n'est pas quelque chose que vous faites pendant rasterization- c'est quelque chose que vous faites pendant le rendu des pixels. Si la profondeur du nouveau pixel est plus loin que la valeur actuellement écrite, ne rend pas le pixel plus loin, par exemple, ne pas le calculer, etc. de couleur Vous ne dessinez pas le z-buffer ou quelque chose comme ça. Ce n'est pas comme une sorte où vous pouvez choisir le type le plus efficace pour votre plus il est algorithme-comme une multiplication de matrice, ils sont à peu près tous les mêmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top