问题标签 [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 投票
1 回答
2009 浏览

opengl - 使用 glReadPixels 进行屏幕捕获会导致某些窗口分辨率中的像素发生偏移

我正在为我的窗口系统使用 GLUT 将一些图像输出到屏幕上。我还想将图像输出到文件。这是一个挑战。在某些窗口分辨率(如 256x256、1024x1024、1920x1200)下,glReadPixels 会生成与屏幕完全相同的图像文件。但是,当我调整窗口大小(例如 / 655x652、529x566 并进行屏幕捕获时,图像会出现锯齿状,并且看起来像素已经线性移动。

任何帮助将不胜感激!

编辑 - 我正在添加一些导致 glReadPixels 调用的代码。

EDIT2 - 我忘了提到用鼠标调整窗口大小有时会产生好的图像。我想当我得到正确的分辨率时会发生这种情况。

0 投票
3 回答
1275 浏览

ios - screenShot代码不适用于ipad,适用于iphone

我遇到了这个奇怪的问题...我必须捕获屏幕数据并使用以下代码将其转换为图像...此代码在 iphone/ipad 模拟器和 iphone 设备上运行良好,但仅在 iPad 上运行良好。iphone 设备的 ios 版本是 3.1.1,而 ipad 是 ios 4.2...

知道出了什么问题..??

0 投票
2 回答
1820 浏览

ios - Problem reading data by glreadpixel() while using depth buffer and anti-aliasing technique

I want to capture the screen of my game using glreadpixel(). it works fine over simulator also on 2g iphone with ios version 3.1.1 . but on ipad with ios version 4.2.1 it doesnt . i came to know the issue regarding this. for ios version 4.0 above on a particular device (ipad) we bind depth buffer and use anti-aliasing technique. And when we use glreadpixel() of opengl that capture data from frame buffer returns all 0 in the destination buffer...

if we dont bind the depth buffer to frame buffer and dont use the anti-aliasing technique it works fine.

the code i used is :-

CGRect screenBounds = [[UIScreen mainScreen] bounds];

Any idea how to include depth information with anti-aliasing while using glreadpixel() or any other similar function in opegl es ?

0 投票
2 回答
2479 浏览

ios - 如何使用图像的像素数据将图像旋转 90 度?

目前我正在使用 glreadpixels() 捕获屏幕。捕获的图像通常是镜像图像,因此我将图像翻转回正常。现在我想将捕获的数据(图像)旋转 90 度。知道该怎么做吗?

我用来捕获屏幕数据的代码是:

知道如何将缓冲区中捕获的数据旋转 90 度吗?谢谢

0 投票
2 回答
8763 浏览

android - 如何在 android 中使用 glreadpixels——通常是零

我正在尝试检测光标下的 opengl 对象...我读过它称为拾取。这是我的代码:

看到上面的大部分代码都是 logcat 语句。我的代码在屏幕上打印 r、g 和 b 的零。对于 alpha,它打印“-1”,可转换为 255(无符号)作为“完整 alpha”。我试图在给定的 x/y 位置检测屏幕上的颜色。我会对介于 1 到 15 之间的红色值感到满意,因为这是应该低于触摸的颜色。我希望如果我做的完全错误,我会得到全零,但我必须至少部分正确,因为我正在获得 alpha。我还在清单中包含了一些行,告诉手机我使用“表面抛掷器”和“读取帧缓冲区”的权限。我不知道这些线路是否有效。

任何帮助,将不胜感激。

0 投票
2 回答
2667 浏览

opengl - glReadPixels - 图像看起来抖动

我希望捕捉我在 openGL 中渲染的图像。我使用 glReadPixels 然后用 CImg 保存图像。不幸的是,结果是错误的。见下文。左边的图像是正确的。我用 GadWin PrintScreen 捕捉到了它。右图不正确。我用 glReadPixels 和 CImg 创建了它:

在此处输入图像描述 在此处输入图像描述

我已经对可能出现的问题进行了很多网络研究,但我没有追寻的途径。这里的代码捕获图像:

这里是我调用快照方法的地方:

跟进评论,我抓住了位深度并打印到控制台。结果如下:

0 投票
1 回答
1444 浏览

macos - OpenGLScreenSnapshot 在 Mac OS X 10.7 中不起作用 - Lion

我一直在编写一个基于来自苹果的 ScreenSnapshot 示例的程序:http: //developer.apple.com/library/mac/#samplecode/OpenGLScreenSnapshot/Introduction/Intro.html 从 Snow Leopard 升级到 Lion 后,我的程序停止了在职的。当我检查示例时,我意识到它也不起作用。出于某种原因,glReadPixels 函数会引发 GL_INVALID_FRAMEBUFFER_OPERATION_EXT 错误 (0x0506)。

我已经重新安装了开发人员的工具,但没有运气。有没有人在这个问题上取得任何进展?任何指针将不胜感激。

0 投票
1 回答
323 浏览

c++ - 最佳像素回读策略

我需要渲染某些场景并将整个图像读回主存储器。我已经搜索过了,似乎大多数显卡会加速渲染,但回读会很慢。经过一番研究,我只发现这张卡提到了“硬件加速像素回读”

另一种方法是进行软件渲染并且不存在回读问题,但是渲染性能会很差。

很可能,我必须同时实现两者才能找到最佳权衡,但我的问题是我在硬件方面还有什么其他选择;我知道 Quadro 是针对建模和设计师细分市场的,这正是这个应用程序的客户目标,这是否意味着我不太可能在其他显卡系列中找到更好的像素回读性能?即:特斯拉或费米,它们甚至没有视频输出顺便说一句

0 投票
1 回答
6044 浏览

ios - 使用带有多重采样的 glReadPixel() 读取数据

目前我正在尝试从帧缓冲区中读取像素数据,以便在 IOS 中捕获屏幕。使用以下代码设置帧缓冲区时,GlreadPixels 命令可以正常工作:-

但是当我使用深度缓冲区和颜色缓冲区进行多重采样时 glreadpixels() 不会像之前的代码那样捕获任何像素数据......对于多重采样,我使用以下代码:-

我使用以下代码读取像素数据:-

知道如何使用多采样技术捕获正确的像素数据......或者我做错了什么?请指导我正确的方向。谢谢

0 投票
2 回答
702 浏览

c++ - 像一维数组一样读取帧缓冲区纹理

我正在使用 GL 进行一些 gpgpu 计算,并希望从帧缓冲区中读取我的结果。我的帧缓冲区纹理在逻辑上是一个一维数组,但我将其设为二维以拥有更大的区域。现在我想从帧缓冲纹理中任意给定长度的任意像素中读取数据。

这意味着所有计算都已经在 GPU 端完成,我只需要将某些数据传递给可以在纹理边界上对齐的 cpu。

这可能吗?如果是,它是否比glReadPixels整个图像更慢/更快,然后剪掉我需要的东西?

编辑 当然,我知道 OpenCL/CUDA,但它们不是我们想要的,因为我希望我的程序在(几乎)任何平台上开箱即用。

我也知道 glReadPixels 非常慢,一个原因可能是它提供了一些我不需要的功能(在 2D 中操作)。因此我要求一个可能更快的更基本的功能。