我正在制作一个Android应用程序来添加像标题一样的行,例如:
(它是一些彩色像素的线,它有点放大)
在左上角:
我不知道是否可以使用OpenGL在纹理顶部添加一些像素。或者我们必须将它放在一个位图中,将其加载到纹理,然后将其与主纹理结合起来。
答案 0 :(得分:1)
要绘制一行像素,最好的方法是从它们创建纹理,然后像任何其他纹理一样绘制它们。根据您的具体用例,至少有两种方法:
如果您始终想要在现有纹理上渲染该行像素,并且在相对于原始纹理内容的相同位置,则可以使用glTexSubImage2D()
修改该纹理。假设您有一个字节数组rowBytes
,其中包含您要添加的nPixels
像素行的RGB值。绑定现有纹理,然后调用:
GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, nPixels, 1,
GLES20.G_RBB, GLES20.GL_UNSIGNED_BYTE,
ByteBuffer.wrap(rowBytes));
使用您用于任何其他纹理的标准调用(glGenTextures
,glBindTexture
,glTexImage2D
)为行创建新纹理。对于单行像素,请将高度指定为1.然后以与渲染现有纹理相同的方式渲染纹理,这通常是通过为要覆盖的区域渲染纹理四边形。