2011-11-29 80 views
0

我有以下功能:的Android的setPixels返回黑色

private void clearScreen(int color) 
{ 
    fOffscreenImage.eraseColor(color); 
} 

private void fillRect(int x, int y, int width, int height, int color) 
{ 
    for(;x<width;x++) 
    { 
     for(;y<height;y++) 
     { 
      buffer[x+y*PROJECTIONPLANEWIDTH] = color; 
     } 
    } 
} 

private void drawBuffer() 
{ 
    fOffscreenImage.setPixels(buffer,0,PROJECTIONPLANEWIDTH,0,0,PROJECTIONPLANEWIDTH,PROJECTIONPLANEHEIGHT); 
} 

兩個函數繪製成位圖,首先是由eraseColor,工作正常,二是通過的setPixels,它總是返回黑色。我正在將圖像寫入使用OpenGL顯示的四邊形。作爲顏色輸入,我嘗試使用默認顏色(Color.BLUE)和Color.argb。 getPixel確實返回有問題的顏色的正確輸出。

一個像素調用setPixel也不管用,它會忽略這個工作。

我試着用Android 2.1和2.3。

對此有何建議將是偉大的..

+0

嘗試 緩衝液[X + Y * PROJECTIONPLANEWIDTH] = Color.argb(#FFFF0000); 如果完整的圖像是紅色的(僅僅是爲了消除一些問題) – vanleeuwenbram

+0

buffer [x + y * PROJECTIONPLANEWIDTH] = 0xffff0000;還返回了黑屏 – RobotRock

+0

爲什麼使用setPixel?你正在嘗試texutre做一個四方或只是顏色嗎? – Chris

回答

0
private void fillRect(int x, int y, int width, int height, int color) 
{ 
    width += x; 
    height += y; 
    for(;x<width;x++) 
    { 
     for(;y<height;y++) 
     { 
      buffer[x+y*PROJECTIONPLANEWIDTH] = color; 
     } 
    } 
} 

應該是

private void fillRect(int x, int y, int width, int height, int color) 
{ 
    width += x; 
    height += y; 
    for(int y2 = y;y2<height;y2++) 
    { 
     for(int x2 = x;x2<width;x2++) 
     { 
      buffer[x2+y2*PROJECTIONPLANEWIDTH] = color; 
     } 
    } 
} 
0

我替換爲以下fillRect代碼raycaster的一部分,它現在顯示白線在適當的地方! 現在只要找出其他顏色以及:)

private void fillRect(int x, int y, int width, int height, int color) 
{ 
    width += x; 
    height += y; 
    for(;x<width;x++) 
    { 
     for(;y<height;y++) 
     { 
      if (x+y*PROJECTIONPLANEWIDTH < PROJECTIONPLANEHEIGHT*PROJECTIONPLANEWIDTH) 
       buffer[x+y*PROJECTIONPLANEWIDTH] = color; 
     } 
    } 
} 
0

我通過不使用setPixel,而是用畫布繪製位圖固定這一點。然而它的死慢..

相關問題