草庐IT

android - Opengl开发依赖GPU吗?

我正在用openglES2.0开发一个android应用程序。在这个应用程序中,我曾经在GLsurfaceView中通过触摸事件绘制多条线和圆圈。由于opengl依赖于GPU,目前它在GoogleNexus7(ULPGeForce)中运行良好。在SamsungGalaxyNote2(MALI400MP)中,我尝试绘制多条线,但它清除了前一行并将当前线绘制为新线。在SonyXperiaNeoV(Adreno205)中,我尝试绘制一条新线,它会破坏表面,如下图所示。是否可以让它在所有设备上运行,还是我需要为单个GPU编写代码?源代码主Activity.java//inOnCreatemet

java - 'texture2D' : No matching overloaded function found OpenGL ES2?

我正在做一个项目,为了那个项目,我必须通读一本名为“OpenGLES2ForAndroid:快速入门指南”的书。所以当我进行纹理处理时,我得到了以下错误:'texture2D':Nomatchingoverloadedfunctionfound当我编译着色器时。着色器代码://Fragmentshaderprecisionmediumpfloat;uniformsampler2Du_TextureUnit;varyingvec4v_TextureCoordinates;voidmain(){gl_FragColor=texture2D(u_TextureUnit,v_TextureCo

java - 3D 球体 OpenGL

我想创建一个球体,实际上是一个地球仪。但我似乎找不到任何有关如何处理球体的顶点和索引以及如何设置它们的有用信息。你们中的任何人都可以引导我走上正确的轨道,也许给我一些示例代码或指向教程的链接吗? 最佳答案 最简单的方法是使用glu函数。我主要在C中工作,但在Java中可能是这样的:importnet.java.games.jogl.GL;importnet.java.games.jogl.GLU;importnet.java.games.jogl.GLUquadric;...GLUquadricquad=glu.gluNewQuad

Android OpenGL 3D采摘

我使用的是AndroidOpenGL-ES2.0,在它带来的所有限制之后,我不知道如何将2D屏幕触摸到我拥有的3D点。我得不到正确的结果。我正在尝试将光线射入点云,然后我可以比较我的点与光线的距离,找到最近的点。publicclassOpenGLRendererextendsActivityimplementsGLSurfaceView.Renderer{publicPointCloudptCloud;MatrixGrabbermg=newMatrixGrabber();...publicvoidonDrawFrame(GL10gl){gl.glDisable(GL10.GL_COLO

android - 在 OpenglES2 [Android] 中使用 glTexImage2D(..) 更新纹理

初始化代码创建一个128x128像素的RGB单色纹理:GLES20.glGenTextures(1,textureId,0);GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,textureId[0]);GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D,0,GLES20.GL_RGB,bitmap.getWidth(),bitmap.getHeight(),0,GLES20.GL_RGB,GLES20.GL_UNSIGNED_BYTE,byteBuffer);|GLES20.glBindTexture(GLES20.GL

Android:与 OpenGL 渲染器线程同步

我正在使用OpenGLES在Android应用程序中执行绘图。我想编写一个从UI线程调用的函数,该函数将调用渲染器线程并让它读取图像并将图像返回给调用者。我正在考虑使用Future这样UI线程就会在渲染器线程写入图像数据时休眠(该操作非常快,因此用户不会觉得应用程序变得无响应)。但是我不知道如何将Future提交给渲染器线程。我找到的所有示例都创建了自己的线程,然后将future提交给这些线程。关于GLSurfaceView的文档提到“queueEvent()方法用于UI线程和渲染线程之间的安全通信。如果您愿意,可以使用其他一些Java跨线程通信技术,例如Renderer类本身的同步方

Android opengl 问题(奇怪)

这很奇怪。我有一个基本应用程序(仪表板,...)和一个GLSurfaceview,我在其中绘制3D对象和纹理。一切都运行得很好,但是当我回去参加其他Activity时,嗯,截图胜于文字:这是之前的仪表盘这是opengl:这是我按下返回时的仪表板:如您所见,图片和文字都消失了。我在4.0+上运行,所以我想这是因为android使用opengl绘制元素,因为它在我的2.2设备上不这样做。您知道造成这种情况的原因吗?顺便说一句,当我不使用纹理时,它不会发生。 最佳答案 好的,我发现了我的问题所在。我通过在fragment的onPause(

android - Framebuffer FBO 渲染到纹理非常慢,在 Android 上使用 OpenGL ES 2.0,为什么?

我正在使用opengles2.0编写Android2d游戏。在我将Sprite绘制到后备缓冲区后,我将灯光绘制到FBO并尝试再次将其混合到后备缓冲区。当我将FBO绘制到帧缓冲区时,即使是透明的,没有任何颜色,在SamsungGalaxyw(它有一个adreno205作为gpu)上,帧率从60下降到30。我到处搜索并尝试了所有方法,即使我在场景中绘制了一个Sprite并将透明的FBO纹理混合到屏幕上,帧率也会下降。我在那部手机上尝试了其他带有灯光效果的游戏,它们运行良好,几乎所有游戏在那部手机上都很好,我相信他们也使用帧缓冲区。在GalaxySII(mali400gpu)上运行良好,我对

iphone - 适用于 Android 和 iPhone 的 OpenGL

在与一些同事的讨论中,我们想知道为Android或iPhone开发的OpenGL工作是否可以有效互换,因为两者都支持规范。或者说,在两个平台之间共享OpenGL的现实更多是一种怪癖、调整,并不像人们希望的那么容易。 最佳答案 OpenGL实现通常由两部分组成:1.平台特定部分。这具有通常与创建和显示表面相关的功能。2.OpenGLAPI。这部分对于OpenGL的具体实现在所有平台上都是一样的,以Android为例,OpenGLES1.0。这意味着您的大部分OpenGL代码应该易于移植。在C中,您可能有glLoadIdentity()

OpenGL ES 绘制一张图片

GLSL语法与内建函数GLSL的修饰符与数据类型GLSL中变量的修饰符const:修饰不可被外界改变的常量attribute:修饰经常更改的变量,只可以在顶点着色器中使用uniform:修饰不经常更改的变量,可用于顶点着色器和片段着色器varying:修饰在顶点着色器计算,然后传递到片元着色器中使用的变量GLSL的基本数据类型intfloatboolfloat是可以再加一个修饰符的,这个修饰符用来指定精度。highp:32bit,一般用于顶点坐标(vertexCoordinate)medium:16bit,一般用于纹理坐标(textureCoordinate)lowp:8bit,一般用于颜色表