gpt4 book ai didi

Android - ICS - 硬件加速窃取了我的 OpenGL 纹理

转载 作者:行者123 更新时间:2023-11-29 22:15:20 26 4
gpt4 key购买 nike

我有一个 Android 应用程序,它使用了一点 OpenGL,在带有 ICS 的 Galaxy Nexus 上运行。打开硬件加速并使用我的 OpenGL Activity 后,其中一些纹理被系统窃取,现在在我的 ListView 和其他 UI 元素中。就好像我通过 GLES20.glGenTextures 获得的 GL 指针实际上不是新指针,而是覆盖了窗口渲染器使用的指针。

在任何情况下,操作系统屏幕绘制系统和我的应用程序之间都应该有某种防火墙或沙箱,不是吗?

完全关闭 hardwareAcceleration 显示正常,但 UI 不稳定(在 2.3 及更低版本上无论哪种方式都非常平滑)。按 Activity 关闭/打开它也无济于事。

屏幕截图(之前/之后)

通常是一个重复的可绘制位图,现在是一个图像(在本例中来自相机)我在不同的 Activity 中加载到 OpenGL - http://a.yfrog.com/img532/9245/t81k.png

生成/加载纹理

int[] image = new int[1];
GLES20.glGenTextures(1, image, 0);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bmp, 0);

基本绘制

GLES20.glViewport(0, 0, width, height);
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
GLES20.glUseProgram(shader.program);
GLES20.glUniform1i(GLES20.glGetUniformLocation(shader.program, "imageTexture"), 0);
GLES20.glVertexAttribPointer(Attributes.VERTEX, 2, GLES20.GL_FLOAT, true, 0, squareVertices);
GLES20.glEnableVertexAttribArray(Attributes.VERTEX);
GLES20.glVertexAttribPointer(Attributes.TEXTUREPOSITON, 2, GLES20.GL_FLOAT, true, 0, textureVertices);
GLES20.glEnableVertexAttribArray(Attributes.TEXTUREPOSITON);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, image[0]);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);

最佳答案

原来我在特定时间在 UI 线程上调用 GL 命令。这干扰了 Romain Guy 在此 post 中建议的应用程序硬件加速显示.

关于Android - ICS - 硬件加速窃取了我的 OpenGL 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com