2017-03-09 58 views
-1

我想呈現數組中的像素。基於0和1之間的值數組呈現灰度像素

我有一個看起來像this(除了大得多)的數據陣列。從這個數組中,我想以某種方式渲染它,以便數組中的每個數字都對應一個基於數字值的具有灰色陰影的像素。 (0.0人是白人,而1.0是黑色)

example image of what I would like

我不知道從哪裏開始。

回答

-1

對於您給出的數組;如果你知道你想要呈現的圖像的寬度和高度,你可以這樣做:

int indx = 0; 
for(int x = 0; x < width; x++) { 
    for(int y = 0; y < height; y++) { 
     glColor3d(data[indx],data[indx],data[indx]); 
     //drawing of it goes here; assuming glVertex2d(x,y); 
     indx++; 
    } 
} 

對於這項工作,應當知道,寬*高< data.length。繪製每個像素的增量索引以轉到數組中的下一個數字並相應地繪製。

修改x和y,使其繪製所需的位置。假如locX = locY = 10,那麼取決於你應該已經設置的視口,那麼圖像將開始渲染10px遠離(可能)左上角或左下角。如果您已經開始學習如何繪製OpenGl和/或LWJGL,那麼這個部分是簡單的數學。

int locX, locY; 
int indx = 0; 
for(int x = 0; x < width; x++) { 
    for(int y = 0; y < height; y++) { 
     glColor3d(data[indx],data[indx],data[indx]); 
     glVertex2d(locX + x, locY + y); 
     indx++; 
    } 
} 

希望這會有所幫助。

+0

呵呵,這是假設它是單維數組,但它很容易適應多維數組 – EddisonKing

+0

這是一個2D數組,但我可以將顏色存儲在1d列表中,所以我應該如何渲染來自顏色數據的圖像? –

+0

分別繪製每個像素會有很糟糕的表現。爲什麼不將數據上傳到單通道紋理並使用線性過濾繪製一個紋理四邊形? – BDL

相關問題