2015-12-09 23 views
1

我正在爲C編程256色VGA。我擁有的屏幕尺寸是320 * 200,所以基於這個假設我製作了繪圖像素函數如下:在C編程的VGA編程:從中獲取x,y座標和偏移

void plot_pixel(int x, int y, byte color){ 
    int offset; 
    offset = (y<<8) + (y<<6) + x; 
    VGA[offset]=color; 
} 

我總是將我的屏幕的x,y座標轉換爲視頻內存的偏移量。我正在努力實現的是做相反的事情。我想給一個函數的視頻偏移和對應於x和y的2個整數還給我座標的數組:

get_xy(int offset){ 
    ... 
} 

但是,我仍然無法找到一種方法,一個單一的數字轉換成兩值。

任何人都可以幫助我實現這個目標嗎?

回答

2

簡單的數學逆轉。最好使用unsigned類型。

y = offset/((1<<8) + (1<<6)); 
x = offset%((1<<8) + (1<<6));