2016-11-09 4 views
1

L'OpenGL a its description à ce sujet, mais qu'en est-il de DirectX?Quel est le résultat de l'exemple avec une texture non initialisée dans DirectX?

Dans mon estimation, le résultat de l'échantillon est float(0, 0, 0, 0), ou se produire un accident par le pilote. Peu importe, c'est juste ma conjecture, ou un cas partiel si testé moi-même seulement. Je veux que ce soit clair.

La texture non initialisée signifie, n'a pas transmis de données avec D3DDevice::CreateTexture2D(), et n'a pas non plus map ni update resource.

Je souhaite utiliser la description de la version de DirectX 11 si possible.

Répondre

0

de la fonction Create2DTexture (que vous avez lié):

Si vous ne réussissez pas à quoi que ce soit pInitialData, le contenu initial de la mémoire pour la ressource est indéfinie. Dans ce cas, vous devez écrire le contenu de la ressource d'une autre manière avant de lire la ressource.

Indéfini peut signifier n'importe quoi, le conducteur déterminera le comportement exact. Il est peu probable qu'il se bloque, mais comme avec un comportement indéfini, tout est possible. Un échantillon de cette texture n'est certainement pas garanti être float4(0,0,0,0) car il est avec une texture non liée.

Il est analogue à l'accès à la mémoire système non initialisée. Le contenu pourrait être rempli de mémoire écrite à partir d'opérations précédentes ayant alloué la même mémoire (en fonction du comportement de l'allocateur). Je suggère que si vous voulez un comportement cohérent, utilisez une texture non liée à la place, ou, initialisez le contenu.

0

Oui vous obtenez 0 pour toutes les valeurs c'est la même chose si vous échantillonnez à partir d'une texture nulle. Je ne me souviens pas où je l'ai lu mais je le connais dans le document MSDN, il m'arrive également de le faire de temps en temps car j'alloue la plupart des textures \ buffers \ views au début et les remplit comme Je vais et si j'échantillon à partir nulle ou non initialisée alors il suffit de lire 0.

+0

Il ne posait pas de question sur une texture non liée, il posait des questions sur une texture dont le contenu n'a pas été initialisé. – MuertoExcobito

+0

Il renvoie toujours 0's n'est-ce pas? J'ai même dit que "si j'échantillonne à partir de null ou non initialisé alors il lit juste 0." Je viens de le tester et vous obtenez float4 (0,0,0,0) –

+0

Votre pilote renvoie float4 (0,0,0,0) avec votre échantillon. Ne veut pas dire que la volonté de tout le monde, ou même la vôtre, sera dans des circonstances différentes. Vois ma réponse. – MuertoExcobito