草庐IT

android - GLES10.glGetIntegerv 仅在 Lollipop 中返回 0

这段代码曾经在我的Nexus72012KitKat中工作:int[]maxSize=newint[1];GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE,maxSize,0);在KitKat中我可以正确获取最大像素值,但在升级到工厂图像Lollipop后,这段代码会导致问题,因为它只返回0。logcat在到达此方法时显示此输出:E/libEGL﹕calltoOpenGLESAPIwithnocurrentcontext(loggedonceperthread)我的Manifest.xml中已经有android:hardwareAccelerat

android - GLES10.glGetIntegerv 仅在 Lollipop 中返回 0

这段代码曾经在我的Nexus72012KitKat中工作:int[]maxSize=newint[1];GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE,maxSize,0);在KitKat中我可以正确获取最大像素值,但在升级到工厂图像Lollipop后,这段代码会导致问题,因为它只返回0。logcat在到达此方法时显示此输出:E/libEGL﹕calltoOpenGLESAPIwithnocurrentcontext(loggedonceperthread)我的Manifest.xml中已经有android:hardwareAccelerat

【OpenGL ES】FBO离屏渲染

1前言        OpenGL默认把framebuffer当作渲染目的地,它由窗口系统创建并管理。应用程序也可以创建额外非可显示的framebufferobject(FBO),以区别窗口系统提供的framebuffer。OpenGL应用程序可以重定向渲染目的地,让它输出到FBO而不是窗口系统提供的framebuffer。        与窗口系统提供的framebuffer类似,FBO包含一系列渲染目的地:颜色缓冲区(colorbuffer)、深度缓冲区(depthbuffer)、模板缓冲区(stencilbuffer),FBO中的这些逻辑缓冲区称为附着点,颜色附着点可以有多个,深度附着点

【OpenGL ES】FBO离屏渲染

1前言        OpenGL默认把framebuffer当作渲染目的地,它由窗口系统创建并管理。应用程序也可以创建额外非可显示的framebufferobject(FBO),以区别窗口系统提供的framebuffer。OpenGL应用程序可以重定向渲染目的地,让它输出到FBO而不是窗口系统提供的framebuffer。        与窗口系统提供的framebuffer类似,FBO包含一系列渲染目的地:颜色缓冲区(colorbuffer)、深度缓冲区(depthbuffer)、模板缓冲区(stencilbuffer),FBO中的这些逻辑缓冲区称为附着点,颜色附着点可以有多个,深度附着点

android - 使用 SurfaceTexture 和 OpenGL 修改相机输出

我正在尝试通过openGL过滤器运行来自相机硬件的流,然后在GLSurfaceView中显示它来过滤来自相机硬件的流。当openGL去渲染帧时,LogCat反复吐出一个错误:[unnamed-3314-0]updateTexImage:clearingGLerror:0x5020x502是一个通用的openGL错误,并不能真正帮助我找出问题所在。这是代码如何工作的序列(或者至少应该像我想象的那样工作),我已经在下面复制了我的代码。我希望其他人能看到我的问题。CreatenewMyGLSurfaceView.ThisinternallycreatesthenewMyGL20Rendere

android - 使用 SurfaceTexture 和 OpenGL 修改相机输出

我正在尝试通过openGL过滤器运行来自相机硬件的流,然后在GLSurfaceView中显示它来过滤来自相机硬件的流。当openGL去渲染帧时,LogCat反复吐出一个错误:[unnamed-3314-0]updateTexImage:clearingGLerror:0x5020x502是一个通用的openGL错误,并不能真正帮助我找出问题所在。这是代码如何工作的序列(或者至少应该像我想象的那样工作),我已经在下面复制了我的代码。我希望其他人能看到我的问题。CreatenewMyGLSurfaceView.ThisinternallycreatesthenewMyGL20Rendere

android - GLES20.glUniform4fv 给出 GL_INVALID_OPERATION (1282)

我在将一小部分vec4上传到GPU时遇到了一些问题。我已将这个问题归结为引发错误的最低限度代码。这是我的fragment着色器:precisionmediumpfloat;uniformvec4test[5];voidmain(){gl_FragColor=test[0]+test[1]+test[2]+test[3]+test[4];}顶点着色器很简单:attributevec4vPosition;voidmain(){gl_Position=vPosition;}这是尝试上传vec4向量的代码:float[]testBuffer=newfloat[4*5];//Fillwith1/

android - 在不同的 GLSurfaceView 之间共享 GLES20 上下文和纹理?

是否可以在不同的GLSurfaceView之间共享GLES20上下文(在一个Activity中)?或者,如何在不同的GLSurfaceView之间共享一组纹理?在iOS上,如果您想在不同的CAEAGLLayer支持的UIView中节省内存并重用(大)纹理,您可以在它们之间传递一个EAGLContext对象,或者使用共享一个公共(public)EAGLSharegroup对象的不同EAGLContext。我想知道如何在Android上完成此操作。有没有等效的技术?编辑1最初的建议是实现您自己的EGLContextFactory,它将返回相同的EGLContext,但它不起作用,因为每个G

android - 在后台加载 - AndEngine GLES2

我将我的项目移植到AndEngineGLES2中,我使用的是GLES1版本tutorial在后台加载Assets,现在我收到此错误:mActivity.onCreateScenefailed.@(Thread:'GLThread10')java.lang.ExceptionInInitializerError这是我的onCreateScene方法@OverridepublicSceneonCreateScene(){this.mEngine.registerUpdateHandler(newFPSLogger());SplashScenemSplashScene=newSplashSc

android - GLES10.glGetIntegerv 在三星设备上返回 0

我使用下面的代码在我的drawView方法中确定我的位图的最大宽度和高度。在大多数设备上,它工作正常并返回2048或1024,但在我目前正在测试的三星S3上,它返回0。我是不是做错了什么,还是必须为三星设备寻找解决方法?int[]maxSize=newint[1];GLES10.glGetIntegerv(GLES10.GL_MAX_TEXTURE_SIZE,maxSize,0);Log.d("GLES10","max:"+String.valueOf(maxSize[0])); 最佳答案 我找到了问题的根源!我没有在list中添加