问题标签 [glreadpixels]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1698 浏览

android - glReadPixels 字节浮动

我正在尝试使用 glReadPixels 在 OpenGL ES 中检索颜色。我用 float[] 设置对象的颜色,例如 {0.0f,0.5f,0.2f,1.0f} 如何将 glReadPixels 值转换为相同的 float[],因为它是无符号字节?

设置颜色:

获取颜色:

我不知道这是否已经被问过/回答过,但我还没有找到解决方案,我已经尝试了很长时间。

0 投票
1 回答
526 浏览

java - Android:glReadpixels 大于视口?

我需要捕获比屏幕宽度更多的像素以保存更高分辨率的图像。我认为唯一的两个选择是使用一些 Matrix 命令将更多像素打包到屏幕中,或者使实际视图大于屏幕(我认为这是不可能的。)我可能应该让人们知道我是使用 OpenGL ES 2。有什么帮助吗?

0 投票
2 回答
152 浏览

opengl - 如何检查 OpenGL 画布上的像素是否已填充?

我试图检测特定像素是否在 OpenGL 中被填充,以实现洪水填充算法。所以,我搜索并找到了 glreadpixel 函数,但我不知道如何使用这个函数以及它是否可以解决我的问题。

0 投票
1 回答
8785 浏览

ios - OpenGL ES 到 iOS 中的视频(使用 iOS 5 纹理缓存渲染到纹理)

你知道 Apple 的带有CameraRipple效果的示例代码吗?好吧,在openGL完成了水的所有凉爽效果之后,我正试图将相机输出记录在一个文件中。

我已经用 glReadPixels 完成了,我在其中读取了 void * buffer 中的所有像素,创建 CVPixelBufferRef 并将其附加到 AVAssetWriterInputPixelBufferAdaptor,但它太慢了,因为 readPixels 需要大量时间。我发现使用 FBO 和纹理现金你可以做同样的事情,但速度更快。这是我在 Apple 使用的 drawInRect 方法中的代码:

它录制了一段视频,而且速度很快,但视频只是黑色的,我认为 textureCashRef 不是正确的,还是我填错了。

作为更新,这是我尝试过的另一种方式。我肯定错过了什么。在 viewDidLoad 中,设置 openGL 上下文后,我执行以下操作:

然后在 drawInRect: 我这样做:

然而它在渲染纹理上因 bad_acsess 而崩溃,它不是零,而是 0x000000001。

更新

使用下面的代码,我实际上设法提取了视频文件,但有一些绿色和红色闪烁。我使用 BGRA pixelFormatType。

这里我创建了纹理缓存:

然后在 drawInRect 我称之为:

我知道我可以通过不在这里做所有这些事情来优化它,但我一直想让它工作。在 cleanUpTextures 中,我使用以下命令刷新 textureCache:

RGBA 的东西可能有问题,或者我不知道,但它似乎仍然有点错误的缓存。

0 投票
2 回答
861 浏览

objective-c - glReadPixels 读取“帧外”区域

我绘制 OpenGL 3200x2000 大小的纹理四边形。OpenGLView 帧大小设置为 940x560。它按应有的方式绘制四边形。当我尝试将其保存为图像(使用 glReadPixels)并将 glReadPixels 区域从(0,0)设置为(3200,2000)时发包。它创建 3200x2000 像素数据,但是当我将其保存到文件时,我看到小图像部分(从左下角 940x560)而整个其他区域都是黑色的。那么如何读取屏幕外区域呢?我尝试使用 Framebuffer,但它非常复杂,在创建它时出错等等......还有其他解决方案吗?


情况可视化:

原始图像如下所示(3200x2000): 在此处输入图像描述

OpenGLView 看起来像这样(940x560): 在此处输入图像描述

保存的图像看起来像这样(3200x2000): 在此处输入图像描述

0 投票
2 回答
16524 浏览

ios - 用 glReadPixels 读取纹理字节?

我想将原始纹理数据转储到磁盘(稍后再读),我不确定 glReadPixel 是否会从当前绑定的纹理中读取。

如何从纹理中读取缓冲区?

0 投票
1 回答
2356 浏览

android - 如何通过 glreadpixels 获取颜色?

我正在尝试在 Android 屏幕上获取触摸点的颜色。但它只显示 RGB = (0, 0, 0) 值。我已经搜索过其他网站。它说我应该在下面添加一些代码,但它没有改变任何东西。

所以任何建议都会提前感谢。

0 投票
1 回答
1622 浏览

opengl-es-2.0 - glreadpixel gl_depth_component 返回 0?

我正在寻找一个立方体和一条线的交点的解决方案。所以我用

我显示了 zz ,但结果为 0。所以当我触摸立方体(实际上是在 2d 屏幕上)时,如何获得立方体的深度缓冲区值。我使用 GLES20 和 Android API level15。我的代码如下。

顺便说一句,挑选颜色效果很好。

谢谢!

0 投票
1 回答
816 浏览

android - glReadPixels GL_RGBA 返回 ARGB 像素

在 NDK、Android 中。调用下一条指令来获取视口像素。我期望像素为 RGBA 格式,但我得到的是 ARGB 像素。有什么问题或者在 glReadPixels 之前设置了吗?

0 投票
2 回答
2555 浏览

ios - glReadPixel 停止使用 iOS6 Beta

可能重复:
为什么 glReadPixels() 在 iOS 6.0 中的此代码中失败?

我目前在 Appstore 中有一个使用 Cocos2D 框架的应用程序。对于碰撞检测,我使用 glReadPixels。屏幕只有白色和黑色像素,检测到黑色像素意味着碰撞。在 iOS 5.1.1 之前一切正常,但在 iOS6 Beta(全部)中 glReadPixels 停止工作。现在 glReadPixels 返回的 RGB 值始终为 0,0,0。

有谁知道出了什么问题或如何解决?

非常感谢您的帮助!