2017-07-10 1 views
0

À l'heure actuelle, je suis en train de créer une texture programatically de la façon suivante: J'ai 1 matrice bidimensionnelle de hexadécimaux:Est-ce que cette façon de texturer est supportée dans Direct3d?

 char array = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f } 

et je veux créer cette texture en utilisant les bits qui font jusqu'à ce tableau depuis F = 1111 et 7 = 0111 en binaire et ainsi de suite. Visuellement, il ressemblerait à ceci:

1 1 1 1 1 1 1 0 
    1 1 1 1 1 1 0 1 
    1 1 1 1 1 0 1 1 
    1 1 1 1 0 1 1 1 
    1 1 1 0 1 1 1 1 
    1 1 0 1 1 1 1 1 
    1 0 1 1 1 1 1 1 
    0 1 1 1 1 1 1 1 

Essentiellement, chaque élément du tableau représenterait une rangée, et chacun des huit bits qui composent l'un des personnages représenterait les éléments. 0 serait non rempli et 1 pour "rempli". J'appliquerais alors la couleur en fonction d'un mécanisme extérieur. J'ai trouvé sur MSDN ce DXGI_format:

DXGI_FORMAT_R1_UNORM 

qui prend en un peu, alors je devine quelque chose de semblable à cette procédure est possible.

Répondre

0

Il n'y a pas de format 1 bit pris en charge par Direct3D. Le format DXGI_FORMAT_R1_UNORM a été créé pour une prise en charge précoce des polices GDI dans l'ère Direct3D 10, mais le format lui-même n'est pas pris en charge pour la texturation par tout matériel Direct3D. A propos du plus petit format que vous pouvez trouver va être DXGI_FORMAT_R8_UNORM où vous étendez vos 1 à 255 octets et gardez vos 0 comme un octet 0.

Pour un tas de code traitant des formats de pixels bruts, jetez un oeil à DirectXTex. Il y a du code pour étendre les formats monochromes comme DXGI_FORMAT_R1_UNORM dans la base de code Convert.