草庐IT

android - Android 上 OpenGL ES 2.0 中的快速动态顶点

我正在尝试使用OpenGLES2.0在Android上批量绘制一堆线条,我需要知道执行此操作的最佳方法。现在我创建了一个名为LineEngine的类,它构建了一个包含所有要绘制的顶点的FloatBuffer,然后一次绘制所有的线。问题是显然FloatBuffer.put()非常慢并且正在疯狂地吞噬CPU时间。这是我的课publicclassLineEngine{privatestaticfinalfloat[]IDENTIY=newfloat[16];privateFloatBuffermLinePoints;privateFloatBuffermLineColors;privatei

android - Android上的OpenGL绘图结合Unity通过帧缓冲区传输纹理无法工作

我目前正在为Unity制作一个Android播放器插件。基本思路是我将播放MediaPlayer的视频。在Android上,它提供了setSurfaceAPI接收SurfaceTexture作为构造函数参数并最终与OpenGL-ES纹理绑定(bind)。在大多数其他情况下,例如显示图像,我们可以将这个纹理以指针/id的形式发送给Unity,调用Texture2D.CreateExternalTexture在那里生成一个Texture2D对象并将其设置为UIGameObject渲染图片。但是,在显示视频帧时,它与略有不同。在Android上播放视频需要GL_TEXTURE_EXTERNA

android - 用于 Android 图像处理的 OpenGL ES vs OpenCL vs RenderScript

我需要为Android构建一个图像处理应用程序。性能是主要要求,我希望使用gpu计算。我想知道这3个库中的哪一个最适合使用。我知道OpenGL主要用于图形,但也支持计算机着色器。我不确定OpenCL在Android上的支持情况RenderScript缺少文档,我认为它比其他库慢。 最佳答案 对于图像处理应用程序,最重的部分是处理(转换/操作)内存中图像的像素,而不是将图像渲染到屏幕/缓冲区。当然,这种处理是通用的,需要通用的计算API。因此,我们可以消除OpenGLES。它支持着色器,但OpenGLES着色语言非常有限,绝对不适合一

android - int数组到android中的opengl纹理

我正在尝试为android中的相机添加一些效果,我在互联网上找到了一些东西,但在创建纹理时卡住了,我使用函数decodeYUV420SP()返回一个int[width*height]RGB数组,每个数组位置都有十六进制值,现在,我想创建这个数组的openGL纹理,但我不知道如何,我可以将每个十六进制值转换为它的R_G_B分隔并将其放入opengl,但它不起作用我做这样的事情:mNewTexture=newint[width*height*4]for(inti=0;i将十六进制值转换为RGBA(从0到255)我这样做是为了将它转换为openGL纹理:gl.glBindTexture(GL

android - 在 OpenGL 和分割中滚动/缩放场景

我们将在Android上的OpenGLES中开发一个滚动/缩放场景,非常类似于愤怒的小鸟中的关卡,但更像是粘粘世界中的关卡。更像后者,因为世界不会像《愤怒的小鸟》中那样由重复的图层组成,而是由一张大图像组成。由于场景需要滚动/缩放,因此很多场景将不可见,我想知道实现渲染的最有效方法,只关注环境(即不是世界中的对象,而是背景层)。我们将使用正交投影。首先想到的是创建一个世界大小的4顶点大矩形,将背景纹理映射到它,然后使用glTranslatef/glScalef对其进行平移/缩放。但是,我想知道屏幕边界外的不可见区域是否仍由OpenGL渲染,因为它没有被剔除(你会失去可见区域,而且只有4

android - 无法初始化 OpenGL 渲染器库

我正在尝试使用genymotion打开一个虚拟android设备。问题是它将无法启动Genymotion虚拟设备。他们的错误显示是无法初始化OpenGL渲染器库。我已经检查了OpenGL支持,它是3.0版。现在有什么问题?UnabletoinitializeOpenGLrendererlibrary. 最佳答案 我有一个类似的问题,最终花了我很多时间。就我而言,我使用的是较旧的Intel显卡驱动程序,它阻止我在升级到Windows8.1后使用Genymotion。我尝试了多个StackOverflow帖子,但它们并没有引导我到任何地

android - OpenGL ES 2.0 屏幕闪烁

我遇到了一个大问题。我正在使用带有Android4.0.3的Transformertf101选项卡。我的应用使用自定义OpenGLES2.0表面。我正在渲染带有纹理的多个平面。这种纹理正在改变大约。每秒20次,并通过传递字节数组进行更新。但是,在某些情况下,屏幕开始闪烁并且不渲染新纹理。其他UI元素仍然响应并按预期工作。OpenGL上下文似乎忽略了所有命令并且没有响应。发生这种情况时,我的logCat中会出现几行:08-2010:31:15.390:D/NvOsDebugPrintf(2898):NvRmChannelSubmit:NvError_IoctlFailedwitherro

安卓 OpenGL ES 2.0 : Is "switch-case" syntax possible in GLSL fragment shader on Samsung Galaxy S2?

有人知道如何在SamsungGalaxyS2的fragment着色器中执行switchcase语法吗?我收到编译错误:Expectedliteralor'(',got'switch'。我的语法如下:switch(i){case0:x=alphas[0];break;case1://...etc.}这在Nexus7上运行良好,但在GalaxyS2上出现上述错误。switchcase指令在GalaxyS2上根本不可能吗?我想使用它们的原因是它们似乎比Nexus7上的ifelse有性能改进。如果它们在GalaxyS2上不可能,是否有查询设备的方法并使用switchcase(如果可用)和ife

android - 在 OPENGL ES 中绘制球体时出现问题

我一直在尝试使用OpenGLES创建我自己的球体,并且我遵循了这里描述的数学http://www.math.montana.edu/frankw/ccp/multiworld/multipleIVP/spherical/learn.htm然而,当我绘制球体(只是顶点)时,只绘制了球体的一半。您能否指出我在下面给出的代码中的确切问题是什么:publicclassSphere{staticprivateFloatBuffersphereVertex;staticprivateFloatBuffersphereNormal;staticfloatsphere_parms[]=newfloat

android - 在 Android 的主线程中使用 OpenGL

当从选项菜单中选择一个项目时,我想调用GLES20方法。publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.clear:GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);break;//...}}这不起作用,因为我在main线程中而不是在GLThread中。它说:calltoOpenGLESAPIwithnocurrentcontext(loggedonceperthread)但是我必须做什么才能让事情正常进行?