2017-03-09 35 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

相关问题