GLES2.0-不确定我是否正确使用glTexImage2D

时间:2018-10-07 20:14:48

标签: android opengl-es opengl-es-2.0

这个问题的新手,在解决问题上没有运气,因此损失了将近3天的工作。

范围:

想要为obj分配一种1唯一的颜色

我做了什么:

// Align color
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
ShaderUtil.checkGLError(TAG, "alignColor: glActiveTexture");
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
ShaderUtil.checkGLError(TAG, "alignColor: glbindtexture");
GLES20.glTexParameteri(GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR_MIPMAP_LINEAR);
ShaderUtil.checkGLError(TAG, "alignColor: glTexParameteri1");
GLES20.glTexParameteri(GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
ShaderUtil.checkGLError(TAG, "alignColor: glTexParameteri2");


ByteBuffer bb = ByteBuffer.allocateDirect(4);
bb.order(ByteOrder.nativeOrder());
IntBuffer ib = bb.asIntBuffer();
ib.put(0x0e5865ff);
ib.position(0);
bb.position(0);

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 1, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, bb);
ShaderUtil.checkGLError(TAG, "alignColor: texImage2D");

问题:

分配的颜色不是预期的。 在这种情况下,我期望:

R 0e --> 14
G 58 --> 88
B 65 --> 101
A ff --> alpha 255

我有红色的时候是绿色的

我做错了什么?

1 个答案:

答案 0 :(得分:0)

最终在Android GLUtils中使用,它将自动检测格式。

获得颜色 创建了1px Btimap 传递给GLUtils

Bitmap textureBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
textureBitmap.setPixel(0,0,localColorInt);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, textureBitmap, 0);