问题标签 [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.
android - 查看 GLSurfaceView 闪烁或根本不显示
我们使用一个ViewGroup
包含一个大GLSurfaceView
视图和一个小视图。视图绘制在GLSurfaceView
. View 在被拖动时是可见的,但是一旦移动结束并且手指从平板电脑上释放,它就会消失。我们发现只有在setRenderMode(RENDERMODE_WHEN_DIRTY)
设置的情况下才会发生这种情况。它在图像连续渲染时起作用,但这会对性能产生非常糟糕的影响。
当使用 aRelativeLayout
而不是 ViewGroup 时,View 会在手指从平板电脑上释放后显示,但当 View 缓慢移动时会闪烁。
使用 OpenGL 绘制视图是不可能的,因为GLSurfaceView
它不会填充到整个视图组,并且视图可以在整个视图组中移动。
这是一个完整的示例,它显示了问题:
android - 将普通视图转换为 GLSurfaceView 的教程
我有编程opengl和使用android sdk的经验,但我从来没有在android中使用过opengl,我有一个项目只使用常规视图和画布来完成所有的绘图。这很好,直到我们开始将应用程序投入实际使用,其中可能同时在屏幕上浮动 40 或更多位图,然后即使在较新的测试硬件上,应用程序也会大大降低速度。
我知道我可以使用 opengl es、ndk 或 anGLSurfaceView
但我想从社区中了解:
是否有任何教程或材料旨在将现有视图转换为GLSurfaceView
?
我在想如果我在 a 中使用 opengl,GLSurfaceView
我会得到很好的性能提升。GLSurfaceView
我想重写的自定义视图非常简单,但是我在扩展它并为其正确创建渲染器时遇到了一些麻烦。一切都变黑了,除非我把它变成透明的,不管怎样,你什么都看不到。
因此,如果有人可以为我提供“阅读文档”的答案,并为我指出一个可以节省我三天阅读时间的教程,我将很高兴:)
android - 在 Android 上动态显示/隐藏多个 OpenGL 视图
我正在使用 OpenGL 在 android 中的 GLSurfaceView 上动态渲染图像。该应用程序对于具有多个自定义 GLSurfaceView 实例的(静态)基于 XML 的布局运行得非常好。(图片左上和右上)
如果这些实例被可见性值动态交换,最后一个可见的 OpenGL 图像仍然在新的顶部。(图片左下角和右下角)
左上图: 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 视图?有没有更好的方法在不使用可见性值的情况下交换它们?
android - Android setHeight 的 glsurfaceview
我想用自定义高度设置 glsurfaceview 的高度。我希望宽度与高度相同。使用 android:layout_width="fill_parent"。我如何才能拥有 width = height = width_of_the_screen ?
非常感谢
android - OpenGL 截图 Android
我有一个使用 GLSurfaceView 在 Android 中做一些 3-D 优点的应用程序。我希望用户能够截取屏幕截图。我认为这段代码应该存储像素颜色并将它们存储在位图中。但是,有谁知道如何访问屏幕正在使用的 gl10 元素,所以我可以将它输入到这个函数中?
我曾尝试在调用 GLSurfaceView 的 Activity 中执行此操作:
但是 int 缓冲区的每个元素都是零,所以我认为这是不正确的。
android - Android:恢复应用程序后 GLSurfaceView 为黑色
根据标题,从暂停状态恢复后 GLSurfaceView 为空白。渲染器的onSurfaceCreated
, onSurfaceChanged
, 并onDrawFrame
在它恢复后被调用,但屏幕仍然是空白的!
以下是相关代码:
我已经读到您需要在 onSurfaceChanged 中重新创建 GL 上下文,但我不确定如何,或者在调用 onSurfaceCreated 时我是否已经这样做了。
请帮忙!
编辑:
这onResume
是包含 GLSurfaceView 的 Activity 的代码:(此处称为 GLSurface)
我在 GLSurfaceView 的 onResume 中没有做太多工作,也没有找到任何文档表明我需要做任何特别的事情来恢复我的 EGL 上下文。
编辑 2:
我还想指出setPreserveEGLContextOnPause(true)
,不幸的是,调用 GLSurfaceView 的构造函数并没有解决我的问题。
android - 如何调整可视区域的大小以显示所有对象/坐标?
我在 GLSurfaceArea 上驾驶一些对象(类似于:http ://www.droidnova.com/android-3d-game-tutorial-part-ii,328.html )。一切正常,但只显示坐标在 -1.0 - +1.0 区间的点。有没有办法调整可视区域的大小以显示不在该区域中的坐标(例如(-2.0、2.0、0.0))?
android - glReadPixels 太慢无法使用
我使用.方法 glReadPixels
定期拍摄快照。我需要定期拍摄此快照,以根据我的应用程序要求继续保存我的数据。drawFrame
GLSurfaceView.Renderer
然而glReadPixels
,性能真的很慢并且显示出滞后。这是我使用该方法的方式:
有替代使用glReadPixels
吗?如何保存图像而不会造成延迟?
android - Android GLSurfaceView
是否可以在 GLSurfaceView 上添加 LinearLayout?如何在 GLSurfaceView 上覆盖 LinearLayout?或许 GLSurfaceView 是 Game playground 而 LinearLayout 是 menubar~
android - OpenGL ES 对象形状在早期版本的 android 蜂窝中未正确绘制
我画了一个圆圈,即使我在 android 中使用 java opengl ES 画了一个基本形状(例如正方形、菱形)。
如果我在蜂窝中运行应用程序,形状会很好,但是如果我在姜饼中运行它,形状会增加一些不必要的点(它会分散),如果我继续执行它很少会没有这些点。
我的渲染器类,
在我的圈子班
我真的少了点线索。我不知道为什么它在 android 版本 <3.0 中不能正确绘制。
编辑:我试图解决它,我发现当我试图绘制点时,在 android 2.3.3 中很少有顶点超出视口(可能是无穷大,我不知道),但对于相同的点android 3.0 它绘制正确的形状。
帮帮我。