草庐IT

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)但是我必须做什么才能让事情正常进行?

android - OpenGL ES Android 矩阵转换

我有一个实现GLSurfaceView.Renderer接口(interface)的渲染器;GLSurfaceView的一个子类和一些代表我要绘制的对象的类。我有来自http://developer.android.com/training/graphics/opengl/motion.html的代码我想扩展它并添加一些沿轴移动但无法管理它。对象仅旋转。这是我的代码:publicclassNotMyCoolRendererimplementsGLSurfaceView.Renderer{publicGLShipmTriangle;privateGLBackgroundStarmSqua

java - OpenGL ES2 Alpha 测试问题

我正在渲染具有alpha纹理的3D多个对象。所有纹理都可以正常加载,但是当我尝试在彼此面前渲染它们时,我得到以下信息:左边是我所拥有的。正确是应该的。网格只是为了帮助可视化视角。红色圆圈纹理前面的纹理被剪裁。我四处寻找答案,它说我可以使用:GLES20.glEnable(GLES20.GL_BLEND);GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA,GLES20.GL_ONE_MINUS_SRC_ALPHA);但是我正在使用它,它仍然无法正常工作。我正确放置在onSurfaceCreated()函数中的设置是:GLES20.glClearColor(0.

Android NDK OpenGL ES 2.0 纹理间距

有什么方法可以在opengles2.0中使用与其宽度不同的间距来blit纹理。通常我会通过使用PBO或通过glPixelStore调整GL_PACK_ROW_LENGTH来解决这个问题。然而,Android平台上似乎既不存在用于绑定(bind)缓冲区的GL_PIXEL_UNPACK_BUFFER也不存在GL_PACK_ROW_LENGTH。glTex(Sub)Image2D不支持这个。有什么建议吗? 最佳答案 引用@HalsafarInsomescenarios,thiscanbesolvedbyadjustingtextureco

Android Opengl-es 加载一个非 2 次幂的纹理

我有一个在android中反复玩过的应用程序,它使用opengl-es。目前我像这样从位图中加载纹理://Loadupandflipthetexture-thendisposethetempBitmaptemp=BitmapFactory.decodeResource(Deflecticon.getContext().getResources(),resourceID);Bitmapbmp=Bitmap.createBitmap(temp,0,0,temp.getWidth(),temp.getHeight(),flip,true);temp.recycle();//Bindthete

android - 为什么不能从另一个线程调用 OpenGL ES 函数

我正在尝试使用OpenGLES为Android编写一个小型游戏引擎。我创建了一个GameThread来更新游戏对象,并使用GLThread绘制场景。我读过你需要在GLSurfaceView的onSurfaceCreated方法中加载纹理。我正在关注它,但出于某些调试目的,我试图从我的游戏线程而不是GLThread加载纹理。我没有出错,纹理也没有显示在屏幕上。我花了一整天的时间试图找出问题所在,最后我阅读了下面的here“只要确保只在主线程中使用OpenGL。”很重要。您不能在游戏引擎(可能在另一个线程中)中调用不与gl线程同步的纹理加载函数。在那里设置一个标志来通知您的gl线程加载新纹

android - 找不到不使用 GL11Ext 进行绘图的 android 2d opengl Sprite 类的合适示例

正如SpriteMethodTest所说,绘制Sprite的方法有很多种。首先,我尝试了Canvas,但遇到了一些性能问题。接下来,我决定学习opengl。我使用GL11Ext扩展取得了我的第一个成就。但是,您知道默认情况下,当您绘制纹理时,它们会翻转并且设备屏幕左下角的x轴和y轴为零(在横向模式下),这与Canvas不同,但您不能旋转Sprite。然后,我尝试使用GLU查看来影响此轴View,但没有效果。接下来,我想旋转我的Sprite,但正如他们所说,由于GL11Ext,我没有任何效果。所以我现在有主要的stackoverflow情况,基本问题是:使用哪种方法来实现sprite的缩