我正在制作一个视频会议应用程序。
在 NDK 方面,我从解码器中获得了 YUV420 中的图像,因此我使用http://wss.co.uk/pinknoise/yuv2rgb/将其转换为 RGB8888 到 Android 位图。
然后我将位图打印到表面视图中。
一切正常,我很高兴。
现在我正在尝试使用纹理视图而不是表面视图(以简化视图层次结构/合成)。我有一个非常奇怪的结果:只有我的位图的最后一个像素被渲染。并且它们被渲染到位。
Canvas canvas = lockCanvas();
if (canvas == null)
return ;
canvas.drawRGB(0, 0, 0);
canvas.save();
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.restore();
unlockCanvasAndPost(canvas);
虽然纹理视图应该呈现:
|------------------|
|xxxxxx |
|xxxxxx |
|xxxxxx |
| |
| |
|------------------|
这就是它呈现的内容。
|------------------|
| xx |
| xx |
| xx |
| |
| |
|------------------|
最奇怪的是,那两个像素列是正确的。它们是位图每一行的最后两个像素。它们在正确的位置正确呈现。
这是一个已知的错误吗?
有什么我做错了吗?