frage zu 24 bit back buffer
-
Hi ihr,
ich hoffe ich bin mit dieser frage auch im richtigen forum:
diesesmal habe ich keinen fehler oder ein problem, sondern eine simple frage, ich habe in meineer grafik klasse eine funktion, die die farbe (unsigned long) eines pixels an der angegebenen position zurück liefert. um dieses zu erreichen muss ich natürlich den back buffer locken (LockRect()). und Unlocken (UnlockRect()). dazwischen kommt nun meine frage. um auf die einzelnen pixel einer surface zuzugreifen muss man doch ungefähr folgendes tun:
------
//nacjh lockrect()
//für einen 32 bit back buffer:
unsigned long * pulBuffer = (unsigned longLockedRect.pBits;
return pulBuffer[x + y * (LockedRect.Pitch / 4)]
-------
für 16 bit back biffers und 8 bit teile ist es auch klar, man nimmt für 16 bit einen unsigned short buffer und teilt den pitch des LockedRects durch 2, für 8n bit einen unsigned char buffer und nimmt den pitch des LockedRects.
aber wie sieht das bei 24 bit aus (z.B. D3DFMT_R8G8B8)?? den pitch muss man durch 3 teilen, logisch, aber was für einen "buffer-typen" muss man nehmen, um korrekte ergebnisse zu erhalten?? bitte helft mir, danke schonmal.
-
struct RGB { BYTE r,g,b; };
RGB würde ich sagen;
rapso->greets();
-
Hey, danke, hoffe, das funzt auch