如何在OpenGL ES中添加纹理上的一些像素

时间:2014-09-09 02:20:21

标签: android opengl-es

我正在制作一个Android应用程序来添加像标题一样的行,例如:

Header

(它是一些彩色像素的线,它有点放大)

在左上角:

Main texture

我不知道是否可以使用OpenGL在纹理顶部添加一些像素。或者我们必须将它放在一个位图中,将其加载到纹理,然后将其与主纹理结合起来。

1 个答案:

答案 0 :(得分:1)

要绘制一行像素,最好的方法是从它们创建纹理,然后像任何其他纹理一样绘制它们。根据您的具体用例,至少有两种方法:

  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));
    
  2. 使用您用于任何其他纹理的标准调用(glGenTexturesglBindTextureglTexImage2D)为行创建新纹理。对于单行像素,请将高度指定为1.然后以与渲染现有纹理相同的方式渲染纹理,这通常是通过为要覆盖的区域渲染纹理四边形。