草庐IT

glReadPixels

全部标签

android - 如何在 Android 上使用基于 GLES30 的 glreadpixels 从特定缓冲区读取数据

据我了解,从GLES30开始,不再有gl_FragColor缓冲区(我看到了HERE)既然我无法读取“特殊变量”,我该如何读取“输出”缓冲区?这是我的代码:privatestaticfinalStringFRAGMENT_SHADER="#version300es\n"+"#extensionGL_OES_EGL_image_external_essl3:require\n"+"precisionmediumpfloat;\n"+//highpheredoesn'tseemtomatter"invec2vTextureCoord;\n"+"uniformsampler2DsTextur

android - 如何在没有设备的情况下在 Nexus 4 上调试 OPENGL ES 2.0 错误?

我有一个带有一堆照片滤镜的Android应用程序。过滤器是用OpenGLES2.0实现的,所以当我想保存最终图像时,我会调用glReadPixels。它适用于我测试过的每台设备,但它似乎不适用于Nexus4。用户报告说他们可以应用过滤器,但是当他们保存最终图像时,他们无法在设备上找到它。我想知道是否有任何方法可以让我模拟nexus4并在模拟器上测试我的应用程序?我已经在模拟器上进行了测试,它运行良好,如果有人对Nexus4有类似的问题,那将是一件好事。我的glReadPixels调用。GLES20.glReadPixels(0,0,saveWidth,saveHeight,GLES20

java - android上使用GLES20.glReadPixels时,返回的数据和living preview不完全一样

我正在尝试在此页面上使用AndroidGPUImagehttps://github.com/CyberAgent/android-gpuimage对视频进行一些实时过滤工作,我使用glReadPixels()获取已由GPU处理并添加了过滤器的数据,然后我使用返回的数据创建了一个位图并将其压缩为jpeg图片最后。该过程运行良好,但jpeg与预览不一样,它只显示预览的底部,但是它的大小是正确的,我已经搜索了很长时间但是仍然没有任何线索,所以你们能给我一些建议吗,任何建议将不胜感激。我使用glReadPixels的代码是这样的:publicstaticBitmapSavePixels(int

android - Android (ARCore) 阻塞上的 PixelBuffer 对象和 glReadPixel

我知道默认的glReadPixels()会等到所有绘图命令都在GL线程上执行完。但是当你绑定(bind)一个PixelBuffer对象然后调用glReadPixels()它应该是异步的并且不会等待任何事情。但是当我绑定(bind)PBO并执行glReadPixels()时,它会阻塞一段时间。下面是我如何初始化PBO:mPboIds=IntBuffer.allocate(2);GLES30.glGenBuffers(2,mPboIds);GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER,mPboIds.get(0));GLES30.glBuf

OpenGL-入门-BMP像素图glReadPixels(1)实现读取屏幕中间的颜色和获取屏幕上鼠标点击位置的颜色

glReadPixels函数用于从帧缓冲区中读取像素数据。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。下面是该函数的基本语法:voidglReadPixels(GLintx,GLinty,GLsizeiwidth,GLsizeiheight,GLenumformat,GLenumtype,GLvoid*data);x和y:读取区域左下角的像素坐标。width和height:读取区域的宽度和高度。format:像素数据的格式,可以是GL_RGBA、GL_RGB、GL_DEPTH_COMPONENT等等。type:数据的数据类型,如GL_UNSIGNED_BYTE、GL_

ios - 从 iOS 中的离屏 OpenGL 像素缓冲区读取像素 (OopenGL-ES)

我想从屏幕外(不受CAEAGLLayer支持)帧缓冲区读取像素。我创建缓冲区的代码如下所示:glGenFramebuffersOES(1,&_storeFramebuffer);glGenRenderbuffersOES(1,&_storeRenderbuffer);glBindFramebufferOES(GL_FRAMEBUFFER_OES,_storeFramebuffer);glBindRenderbufferOES(GL_RENDERBUFFER_OES,_storeRenderbuffer);glFramebufferRenderbufferOES(GL_FRAMEBUFF

ios - glReadPixel 停止使用 iOS6 Beta

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhyisglReadPixels()failinginthiscodeiniOS6.0?我目前在Appstore中有一个使用Cocos2D框架的应用程序。对于碰撞检测,我使用的是glReadPixels。屏幕只有白色和黑色像素,检测到黑色像素意味着碰撞。在iOS5.1.1之前一切正常,但在iOS6Beta(所有这些)中glReadPixels停止工作。现在glReadPixels返回的RGB值始终为0,0,0。有没有人知道出了什么问题或如何解决?非常感谢您的帮助!

ios - glCopyTexImage2D 作为 glReadPixels (OpenGL ES) 的替代品

我目前正在使用glReadPixels抓取OpenGLES游戏的屏幕截图。屏幕截图很棒,但是对glReadPixels的调用会导致游戏出现小卡顿。glCopyTexImage2D已被建议作为glReadPixels的更有效替代品。glCopyTexImage2D是如何工作的?对于某些上下文,我使用thisApplemethod.我对OpenGL比较陌生,所以非常感谢任何帮助:-) 最佳答案 时间延迟是由GPU和CPU之间传输大量内存造成的。这可以通过分block传输来解决,每帧一点点。但是,如果您从帧缓冲区读取一系列帧,则图像会同时

iphone - 弱链接 C 函数

我正在开发获取屏幕截图的静态库,从OpenGL应用程序获取它们需要特殊处理。当客户端应用程序链接到我的静态库时,它必须添加我的库使用的框架,例如获取OpenGL屏幕截图,即使客户端应用程序未使用OpenGL,它也必须与OpenGLES.framework链接,这很糟糕。如果客户端已链接到OpenGLES.framework并动态启用从OpenGL截屏,我正在尝试检查库。问题是当我尝试使用像这样的C函数时出现编译错误:if(&glReadPixels!=NULL){glReadPixels(0,0,size.width,size.height,GL_RGBA,GL_UNSIGNED_BY

ios - glReadPixels 不读取 iOS 上的深度缓冲区值

我似乎无法在iOS4.3上的OpenGLES2中读取深度缓冲区值afDepthPixels=(float*)malloc(sizeof(float)*iScreenWidth*iScreenHeight);glReadPixels(0,0,iScreenWidth,iScreenHeight,GL_DEPTH_COMPONENT,GL_FLOAT,afDepthPixels);我的深度缓冲区目前已绑定(bind)到位并可操作,但是该函数只读取0值,而且它似乎几乎立即返回。如果我给它一个GL_RGBA,它会花费相当长的时间,并且确实会返回结果。iOS上的ES2不支持此功能吗?谢谢!