Leo en otro hilo, que puedo leer un solo píxel con Texture.Lock/Unlock, pero necesito volver a escribir los píxeles en la textura después de leerlos, este es mi código hasta ahoraDirectX establece el color de un solo píxel
unsigned int readPixel(LPDIRECT3DTEXTURE9 pTexture, UINT x, UINT y)
{
D3DLOCKED_RECT rect;
ZeroMemory(&rect, sizeof(D3DLOCKED_RECT));
pTexture->LockRect(0, &rect, NULL, D3DLOCK_READONLY);
unsigned char *bits = (unsigned char *)rect.pBits;
unsigned int pixel = (unsigned int)&bits[rect.Pitch * y + 4 * x];
pTexture->UnlockRect(0);
return pixel;
}
Así que mis preguntas son:
- How to write the pixels back to the texture?
- How to get the ARGB values from this unsigned int?
((BYTE) x >> 8/16/24) no funcionó para mí (el valor devuelto por la función era 688)
por curiosidad, ¿por qué necesitas hacer esto? – tbridge
debe saber que el rendimiento de este tipo de bloqueo es solo el nivel de cucarachas. (En 2002, según mis pruebas, estaba funcionando a 0.5 FPS, hoy puede ser más rápido, pero aún te estás incapacitando para hacer este tipo de cosas). –