Ich fange an, d3d10-Unterstützung hinzuzufügen, um mit meinem vorhandenen d3d9 Grafik-Backend zu gehen.Direct3D10: Kein 32-Bit-ARGB-Format?
Das Problem ist der gesamte vorhandene Code (in verschiedenen Anwendungen ...) verwendet ARGB formatierte Farben, aber ich konnte keinen Formatmodus finden, der für d3d10 passt. Unterstützt d3d10 überhaupt keine ARGB-Farbformate oder habe ich gerade etwas verpasst? Wenn ich etwas verpasst habe, was eine gute Möglichkeit ist, zwischen ihnen zu konvertieren, muss nur das erste Byte bis zum Ende bewegt werden, das scheint ein ziemlich einfaches Konzept zu sein, aber ich kann sowieso nichts anderes tun, als die Farbe in seine Komponenten zu zerlegen und Rekonstruieren ... zB:
//unsigned colIn, colOut
unsigned char
a = (colIn & 0xFF000000) >> 24,
r = (colIn & 0x00FF0000) >> 16,
g = (colIn & 0x0000FF00) >> 8,
b = (colIn & 0x000000FF);
colOut = (r << 24) | (g << 16) | (b << 8) | a;
Nun, ich habe nur Zielfenster für das d3d-Grafik-Backend, also kann ich von einem kleinen Endian ausgehen, oder? –
Ja, ich denke du kannst das, obwohl ich implizite Endian-Annahmen für das halte, was sie hier einen "Code-Geruch" nennen. Stellen Sie sicher, dass Sie diese Teile des Codes natürlich dokumentieren/kommentieren. – unwind
Sie werden keine Endian-Probleme haben, solange die Daten nicht über Plattformen laufen. – MSN