草庐IT

android - 增强现实 - 将 GPS 映射到 OpenGL

我正在编写一个AndroidAR应用程序并让我的引擎正常工作,但它包含一个我似乎无法修复的奇怪行为。我在相机图像上覆盖OpenGL表面,并相应地将3D对象放置在View中。如果我将虚拟数据用于我的AR对象的位置,即LAT10LON10在OpenGL表面上变成x=10y=10,那么叠加效果很好。但是,如果我为我的LAT和LON使用直接GPS坐标(例如LAT12.34567890LON100.23456789),那么我的所有对象要么在它们的位置周围移动,要么根本不出现。我知道使用float和OpenGL框架存在问题,但我一直在阅读,但仍然无法阻止这种行为。有没有其他人有这个问题?我应该在我

Android:运行繁重的后台任务时 OpenGL 渲染暂停

我通过OpenGL渲染对象,并且在大多数情况下获得了60fps的流畅帧率。直到我在后台线程中做了一些繁重的事情,比如从RESTAPI中获取东西,处理它,以及将对象添加到图形中(低优先级的东西,我更关心UI的流动性)。然后渲染器将暂停很长时间,最多1秒(大约只要后台线程运行),然后恢复,就好像什么也没发生一样。我注意到这一点是因为同时启动了动画,并且在此期间卡住了。后台线程设置为最低优先级,垃圾收集确实需要100-200毫秒,但不是整秒。当我在后台任务中的任意位置设置调试点时,渲染继续正常进行,没有任何延迟。有没有可能是我繁重的后台线程让OpenGL线程饿死了?如果可以,我该怎么办?

android - 在 OpenGL ES 2.0 中写入深度缓冲区/深度值的解决方法

我需要写入Android设备(OpenGLES2.0)上的深度缓冲区。由于gl_FragDepth在OGLES2.0下不可写,我必须找到解决方法。我实际上想通过光线转换来渲染球体,类似于:http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20.然而,本网站上解释的解决方案(使用特殊的glBlendEquation编写深度的屏幕外渲染channel)仅适用于Apple设备,不适用于Android,因为GL_MIN_EXT-混合是不支持。在我的Tegra3平板电脑上,我能够实现这

android - "ERROR: OpenGLES initialization failed!"在 CentOS 与 android SDK

当我运行时:/usr/local/android-sdk-linux/tools/emulator-avdtst我得到错误:Failedtoopenlib64EGL_translatorFailedtoinit_egl_dispatchemulator:ERROR:OpenGLESinitializationfailed!emulator:ERROR:OpenGLESemulationlibrarycouldnotbeinitialized!emulator:WARNING:CouldnotinitializeOpenglESemulation,usingsoftwarerendere

android - 我们如何在 Android 1.5 的 OpenGL ES 中获得多边形抗锯齿?

基于我对Ch的阅读。红皮书中的6,改ES需要改的东西,我想下面的代码应该可以搞定:gl.glEnable(GL10.GL_POLYGON_SMOOTH);gl.glBlendFunc(GL10.GL_SRC_ALPHA_SATURATE,GL10.GL_ONE);gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT,GL10.GL_NICEST);//novisiblediffgl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_NICEST);gl.glColor4f(1,1,1,1);gl.glDrawAr

android - OpenglES 混合粒子但不混合背景

我有下一个流程:-drawbackground-drawobjectsandblendwithbackground(1)GL10.GL_SRC_ALPHA,GL10.GL_ONE_MINUS_SRC_ALPHA-drawparticleeffectwithblending(2)GL10.GL_SRC_ALPHA,GL10.GL_ONEinordertohighlightoverlappingparticles问题-当我绘制粒子时,它们会另外与背景混合并变得非常明亮。简单地说,我需要的是将粒子与(2)混合,然后使用(1)将所有粒子混合在一起以与背景混合。不工作的解决方案:在纹理上绘制效果

android - 渲染脚本渲染比 Android 上的 OpenGL 渲染慢很多

背景:我想根据Android相机应用程序的代码添加实时滤镜。但是Android相机应用程序的架构是基于OpenGLES1.x的。我需要使用着色器来自定义我们的过滤器实现。但是,将相机应用程序更新到OpenGLES2.0太难了。然后我必须找到一些其他方法来实现实时过滤器而不是OpenGL。经过一番研究,我决定使用渲染脚本。问题:我已经通过渲染脚本编写了一个简单的过滤器演示。它表明fps比通过OpenGL实现它要低得多。大约5fps与15fps。问题:Android官方offsite说:RenderScript运行时将跨设备上可用的所有处理器并行工作,例如多核CPU、GPU或DSP,让您专

java - Opengl es 2.0 在视频上绘制位图叠加

我试图在视频的每一帧上绘制一个位图作为叠加层。我找到了一个关于如何对视频进行解码和编码的示例,并且它正在运行。这个例子有一个带有drawFrame函数的TextureRenderer类,我需要修改它以添加位图。我是opengl的新手,但我了解到我需要使用位图创建纹理并绑定(bind)它。我在下面的代码中尝试过,但它抛出异常。/**Copyright(C)2013TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptinc

java - Android 版 OpenGL ES 2.0 中的纹理

我是OpenGL的新手,我正在通过使用ES2.0为Android制作2D游戏来自学。我首先创建一个“Sprite”类,该类创建一个平面并为其渲染纹理。为了练习,我在同一个地方交替绘制了两个Sprite对象。我在ES1.0上工作得很好,但现在我已经切换到2.0,我得到了一个没有错误的黑屏。我已经筋疲力尽地想弄清楚我做错了什么,但我有一种强烈的感觉,这与我的着色器有关。我将在这里转储所有相关代码,希望有人可以就我做错了什么给我一个答案或一些建议。如果不是很明显我做错了什么,也许有一些关于如何解决的建议?预先感谢您查看我将要发布的所有代码。我发布的三个类(class)是:GameRender

java - 让 OpenGL-ES 模板缓冲区工作

使用Android版opengl-es中的模板缓冲区,我只是想屏蔽掉屏幕的绘图部分。我想我已经设置好了,但它并没有掩盖非模板部分。下面是我正在做的代码的提取。gl.glEnable(GL10.GL_STENCIL_TEST);gl.glClearStencil(0);gl.glClear(GL10.GL_STENCIL_BUFFER_BIT);gl.glColorMask(false,false,false,false);gl.glDepthMask(false);gl.glStencilFunc(GL10.GL_ALWAYS,1,1);gl.glStencilOp(GL10.GL_R