esta parte:
void Video::putPixel( word x , word y , byte red , byte green , byte blue )
{
word color = ( ( word )( red & ( ( 1 << vbeModeInfoBlock.RedMaskSize ) - 1 ) ) << vbeModeInfoBlock.RedFieldPosition );
color |= ( ( word )( green & ( ( 1 << vbeModeInfoBlock.GreenMaskSize ) - 1 ) ) << vbeModeInfoBlock.GreenFieldPosition );
color |= ( ( word )( blue & ( ( 1 << vbeModeInfoBlock.BlueMaskSize ) - 1 ) ) << vbeModeInfoBlock.BlueFieldPosition );
long addr = (long)y * vbeModeInfoBlock.BytesPerScanLine + x * (vbeModeInfoBlock.BitsPerPixel >> 3);
setBank((int)(addr >> 16));
*(videoMemory + (addr & 0xFFFF)) = (char)color;
*(videoMemory + (addr & 0xFFFF) + 1 ) = (char)(color >> 8);
}
pone un pixel en la posicion definida con el color definido en la pantalla para cualquier modo de vesa.
C++, 17 años, DOS, Turbo C++ 1.01, que epocas aquellas :P
No hay comentarios.:
Publicar un comentario