问题标签 [glsurfaceview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1395 浏览

android - 查看 GLSurfaceView 闪烁或根本不显示

我们使用一个ViewGroup包含一个大GLSurfaceView视图和一个小视图。视图绘制在GLSurfaceView. View 在被拖动时是可见的,但是一旦移动结束并且手指从平板电脑上释放,它就会消失。我们发现只有在setRenderMode(RENDERMODE_WHEN_DIRTY)设置的情况下才会发生这种情况。它在图像连续渲染时起作用,但这会对性能产生非常糟糕的影响。

当使用 aRelativeLayout而不是 ViewGroup 时,View 会在手指从平板电脑上释放后显示,但当 View 缓慢移动时会闪烁。

使用 OpenGL 绘制视图是不可能的,因为GLSurfaceView它不会填充到整个视图组,并且视图可以在整个视图组中移动。

这是一个完整的示例,它显示了问题:

0 投票
1 回答
1183 浏览

android - 将普通视图转换为 GLSurfaceView 的教程

我有编程opengl和使用android sdk的经验,但我从来没有在android中使用过opengl,我有一个项目只使用常规视图和画布来完成所有的绘图。这很好,直到我们开始将应用程序投入实际使用,其中可能同时在屏幕上浮动 40 或更多位图,然后即使在较新的测试硬件上,应用程序也会大大降低速度。

我知道我可以使用 opengl es、ndk 或 anGLSurfaceView但我想从社区中了解:

是否有任何教程或材料旨在将现有视图转换为GLSurfaceView?

我在想如果我在 a 中使用 opengl,GLSurfaceView我会得到很好的性能提升。GLSurfaceView我想重写的自定义视图非常简单,但是我在扩展它并为其正确创建渲染器时遇到了一些麻烦。一切都变黑了,除非我把它变成透明的,不管怎样,你什么都看不到。

因此,如果有人可以为我提供“阅读文档”的答案,并为我指出一个可以节省我三天阅读时间的教程,我将很高兴:)

0 投票
1 回答
1878 浏览

android - 在 Android 上动态显示/隐藏多个 OpenGL 视图

我正在使用 OpenGL 在 android 中的 GLSurfaceView 上动态渲染图像。该应用程序对于具有多个自定义 GLSurfaceView 实例的(静态)基于 XML 的布局运行得非常好。(图片左上和右上)

如果这些实例被可见性值动态交换,最后一个可见的 OpenGL 图像仍然在新的顶部。(图片左下角和右下角)

http://www.abload.de/img/appxbunc.jpg

左上图: 4 个实例,正常大小

右上图: 4个实例,大尺寸

左下图: 1 个实例,正常大小(左上图为不需要的叠加)

右下图: 1 个实例,大尺寸(左上图为不需要的叠加层)

到目前为止我尝试了什么:

  • 没有删除不需要的实例:
    • 通过 android::visibility="gone" 隐藏未使用的图像(运行不顺畅)
    • 将视图移出可见区域并将它们的大小调整为 0 x 0
    • 使用纯色而不是动态图像来简化输出
    • 通过使视图无效来强制重绘视图(我实际上尝试了视图提供的几乎所有功能)
    • 清除 onDraw() 函数中的各种缓冲区(实际上我几乎尝试了 GLSurfaceView 提供的所有函数)
    • 强制 onPause() 事件停止渲染器
    • 使用 ViewPager 在视图之间切换
  • 成功删除不需要的实例:
    • 重新进入应用重启OpenGL(不能这样用)
    • 通过 android::visibility="gone" 递归地隐藏所有其他 GLSurfaceViews(对引擎进行了窃听,因此它停止工作)

不需要的图像不会随着布局重排而改变,例如视图的可见性变化。它们仅在 GLSurfaceView 位于另一个 GLSurfaceView 上方时可见(由 android::visibility="gone" 隐藏)。如果使用 ImageView 代替,则没有问题。第一个创建的实例没有这个问题,因为它位于子堆栈的顶部(或底部?)并且位于其兄弟姐妹的顶部。

我猜android只支持一个基于OpenGL的视图,所有GLSurfaceView实例都使用它。所有实例似乎都有一些偏好(尤其是可见性),所以它不能只是关闭或移出。

GLSurfaceView 类:

那么是否可以在彼此内部(尤其是在顶部)使用多个 OpenGL 视图?有没有更好的方法在不使用可见性值的情况下交换它们?

0 投票
2 回答
3706 浏览

android - Android setHeight 的 glsurfaceview

我想用自定义高度设置 glsurfaceview 的高度。我希望宽度与高度相同。使用 android:layout_width="fill_parent"。我如何才能拥有 width = height = width_of_the_screen ?

非常感谢

0 投票
1 回答
1168 浏览

android - OpenGL 截图 Android

我有一个使用 GLSurfaceView 在 Android 中做一些 3-D 优点的应用程序。我希望用户能够截取屏幕截图。我认为这段代码应该存储像素颜色并将它们存储在位图中。但是,有谁知道如何访问屏幕正在使用的 gl10 元素,所以我可以将它输入到这个函数中?

我曾尝试在调用 GLSurfaceView 的 Activity 中执行此操作:

但是 int 缓冲区的每个元素都是零,所以我认为这是不正确的。

0 投票
2 回答
6111 浏览

android - Android:恢复应用程序后 GLSurfaceView 为黑色

根据标题,从暂停状态恢复后 GLSurfaceView 为空白。渲染器的onSurfaceCreated, onSurfaceChanged, 并onDrawFrame在它恢复后被调用,但屏幕仍然是空白的!

以下是相关代码:

我已经读到您需要在 onSurfaceChanged 中重新创建 GL 上下文,但我不确定如何,或者在调用 onSurfaceCreated 时我是否已经这样做了。

请帮忙!

编辑:onResume是包含 GLSurfaceView 的 Activity 的代码:(此处称为 GLSurface)

我在 GLSurfaceView 的 onResume 中没有做太多工作,也没有找到任何文档表明我需要做任何特别的事情来恢复我的 EGL 上下文。

编辑 2: 我还想指出setPreserveEGLContextOnPause(true),不幸的是,调用 GLSurfaceView 的构造函数并没有解决我的问题。

0 投票
1 回答
347 浏览

android - 如何调整可视区域的大小以显示所有对象/坐标?

我在 GLSurfaceArea 上驾驶一些对象(类似于:http ://www.droidnova.com/android-3d-game-tutorial-part-ii,328.html )。一切正常,但只显示坐标在 -1.0 - +1.0 区间的点。有没有办法调整可视区域的大小以显示不在该区域中的坐标(例如(-2.0、2.0、0.0))?

0 投票
1 回答
5708 浏览

android - glReadPixels 太慢无法使用

我使用.方法 glReadPixels定期拍摄快照。我需要定期拍摄此快照,以根据我的应用程序要求继续保存我的数据。drawFrameGLSurfaceView.Renderer

然而glReadPixels,性能真的很慢并且显示出滞后。这是我使用该方法的方式:

有替代使用glReadPixels吗?如何保存图像而不会造成延迟?

0 投票
1 回答
3113 浏览

android - Android GLSurfaceView

是否可以在 GLSurfaceView 上添加 LinearLayout?如何在 GLSurfaceView 上覆盖 LinearLayout?或许 GLSurfaceView 是 Game playground 而 LinearLayout 是 menubar~

0 投票
2 回答
415 浏览

android - OpenGL ES 对象形状在早期版本的 android 蜂窝中未正确绘制

我画了一个圆圈,即使我在 android 中使用 java opengl ES 画了一个基本形状(例如正方形、菱形)。

如果我在蜂窝中运行应用程序,形状会很好,但是如果我在姜饼中运行它,形状会增加一些不必要的点(它会分散),如果我继续执行它很少会没有这些点。

我的渲染器类,

在我的圈子班

我真的少了点线索。我不知道为什么它在 android 版本 <3.0 中不能正确绘制。

编辑:我试图解决它,我发现当我试图绘制点时,在 android 2.3.3 中很少有顶点超出视口(可能是无穷大,我不知道),但对于相同的点android 3.0 它绘制正确的形状。

帮帮我。