Android 使用扫描线填充算法后,轮廓边缘存在间隙(未填充)
在Android平台上,用扫描线填充指定区域(目前仅支持凸面形状)后,我发现在轮廓边缘有一些未填充的间隙 看起来是这样的: 主要集中在填充区域的右上角,左上角有少量空白。实施代码如下:Android 使用扫描线填充算法后,轮廓边缘存在间隙(未填充),android,kotlin,opengl-es,brush,Android,Kotlin,Opengl Es,Brush,在Android平台上,用扫描线填充指定区域(目前仅支持凸面形状)后,我发现在轮廓边缘有一些未填充的间隙 看起来是这样的: 主要集中在填充区域的右上角,左上角有少量空白。实施代码如下: class Fill02:MainActivity.ifll{ private val pixel=ByteBuffer.allocate(3) //要填充的颜色 专用val颜色=字节数组(3) 私有变量xScanLeft=0 私有变量xScanRight=0 覆盖有趣的填充(x:Int,y:Int,minX:
class Fill02:MainActivity.ifll{
private val pixel=ByteBuffer.allocate(3)
//要填充的颜色
专用val颜色=字节数组(3)
私有变量xScanLeft=0
私有变量xScanRight=0
覆盖有趣的填充(x:Int,y:Int,minX:Int,maxX:Int,minY:Int,maxY:Int,callback:MainActivity.IFillCallback){
val surfaceWidth=maxX-minX
val表面高度=最大-最小
GLES20.glReadPixels(x,y,1,1,GLES20.GL_RGB,GLES20.GL_无符号字节,像素)
像素位置(0)
颜色[0]=像素。获取(0)
颜色[1]=像素。获取(1)
颜色[2]=像素。获取(2)
var xLeft=x
var xRight=x
而(isSameColor(xLeft-1,y)和&0
callback.fullCallback
方法代码如下:
override-fullCallback(x:Float,y:Float){
buffer.put((x-mSurfaceSize.x)/mSurfaceSize.x)
buffer.put((mSurfaceSize.y-y)/mSurfaceSize.y)
}
更改了曲面上的覆盖(gl:GL10?,宽度:Int,高度:Int){
mSurfaceSize.set(宽/2.0f,高/2.0f)
GLES20.glViewport(0,0,宽度,高度)
}
顶点着色器代码如下所示:
属性向量2位置;
均匀的浮点数;
void main(){
gl_PointSize=vPointSize;
gl_位置=vec4(V位置,0.0,1.0);
}
完整的源代码已打开
请问有什么问题
附件1:
修改代码后,图片已导出
导出图片的代码如下所示:
private fun save(){
isSave=false
val w=mSurfaceSize.x.toInt()*2
val h=mSurfaceSize.y.toInt()*2
val屏幕快照大小=w*h
val pixels=IntBuffer.allocate(屏幕快照大小)
GLES20.glReadPixels(0,0,w,h,GLES20.GL_RGBA,GLES20.GL_无符号_字节,像素)
环球镜发射{
val buffer=IntBuffer.allocate(屏幕快照大小)
对于(i在0中直到h){
对于(0中的j到w){
buffer.put((h-i-1)*w+j,pixels.get(i*w+j));
}
}
val config=Bitmap.config.ARGB_8888
val bitmap=bitmap.createBitmap(w,h,config)
位图.eraseColor(Color.argb(0、255、255、255))
位图.copyPixelsFromBuffer(缓冲区)
val out=FileOutputStream(保存路径)
bitmap.compress(bitmap.CompressFormat.JPEG,100,out)
}
}
也许在黑线中有别名,这样亮点实际上不是白色的,因此颜色与内部背景不同,不是吗?您发布的图像在填充颜色上似乎也有别名,因此我怀疑它是否真的是输出图像,或者导出/保存过程是否改变了它。出于这个原因,我不确定这是一个别名问题,但我仍然怀疑它是。你能分享真实的原始输入图像吗?@DiegoMazzaro是的,你是对的,图片是通过截图获得的。修改代码后,图片已导出,图片已附加到原始帖子。我要求输入图片。。你能提供那个吗?或者你可能已经验证过它在那个阶段有(没有)混叠了吗?是不是可能你在黑线上有混叠,所以亮点实际上不是白色,所以颜色与内部背景不同?您发布的图像在填充颜色上似乎也有别名,因此我怀疑它是否真的是输出图像,或者导出/保存过程是否改变了它。出于这个原因,我不确定这是一个别名问题,但我仍然怀疑它是。你能共用空调吗