问题标签 [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.
python - 实现渲染到顶点数组,glReadPixels 失败(无效操作)
我正在尝试将顶点数据从纹理复制到顶点缓冲区,然后绘制顶点缓冲区。据我所知,最好的方法是将纹理绑定到 fbo,然后使用 glReadPixels 将其复制到 vbo。但是,我似乎无法让这个工作:glReadPixels 失败并出现错误“无效操作”。
欢迎更正、示例和替代方法。:)
以下是相关代码:
android - android中glReadPixels的问题
我正在尝试实现一个我读过的 opengl 拾取系统,并且遇到了 glReadPixels 的问题。基本上,场景中的每个节点都会获得一种独特的颜色,当发生新的触摸时,它会渲染场景,而只有使用其独特颜色 ID 绘制的节点。我正在尝试使用存储的颜色 ID 列表检查输入坐标。
我无法让 glReadPixels 正常工作。对于像素值,它始终返回 0 0 0。对于从中获取正确像素值的任何帮助,我将不胜感激。谢谢
这是相关代码
iphone - OpenGL ES 2.0 :glReadPixels() 带有 float 或 half_float 纹理
我正在为 iPhone (iOS 4.1) 编写一个 OpenGL ES 2.0 应用程序。在着色器中完成的计算结束时,我需要将一些数据写回 CPU。据我所知,这可以通过 glReadPixels() 来完成。为了保持精度,我想在着色器之间使用 half_float 或 float 纹理,这似乎受到扩展的支持。
问题:是否可以使用 glReadPixels() 读取 float 或 half_float 纹理?
谢谢,
拉斯
iphone - Iphone 使用 open gl 过滤器保存慢速视频
我正在使用带有预设 AVCaptureSessionPresetMedium 的 avcapturesession 来捕获视频,我正在使用 opengl 使用着色器对此视频应用效果。我使用assetWriter 将视频写入mp4 文件。问题是当我添加音频输出时,生成的视频特别慢。
这就是我的代码的工作方式:
- 在 - (void)captureOutput:(AVCaptureOutput *)captureOutput... 函数中,我将 opengl 过滤器应用于捕获的帧
- 然后检查 captureoutput 是视频还是音频,如果是视频,我使用 glReadPixels 创建一个 CVPixelBufferRef 发送到 AVAssetWriterInputPixelBufferAdaptor 来写入它
- 如果是音频,我直接写 CMSampleBufferRef
如果有人能告诉我我的方法有什么问题,或者哪个部分应该使结果视频变慢?
c++ - 如何在OpenGL中截取屏幕截图
如何在 C++ 中截取 OpenGL 窗口的屏幕截图并将其保存到文件中。
我找到了该glReadPixels()
功能,但我不知道下一步该做什么。例如,我可以在哪里设置文件的路径?
如果不难,请写代码。
opengl - SDL OpenGL 屏幕截图为黑色
我在 SDL 库的帮助下创建了我的 opengl 窗口的屏幕截图,但它全是黑色的,我不明白为什么。如何解决?
代码:
opengl - 使用 glReadPixels 和 gluUnProject 读取透明平面的深度值
我正在尝试创建一个台球模拟,并且一直在使用 glReadPixels 和 gluUnProject 将我的鼠标指针投影到场景中。
如果鼠标指向场景中的一个对象(例如表格),这可以正常工作,但是当它指向背景时,由于 glReadPixels 调用返回 1.0,它会弄乱 gluUnProject。
我试图弄清楚如何在桌子的同一水平面上绘制一个透明平面,这样无论我将鼠标指向场景中的哪个位置,它都会获得深度,就好像它指向与桌子相同的平面一样.
如果我绘制一个没有 glAlphaFunc(GL_GREATER, 0.01f); 的透明四边形;它会将四边形绘制为白色,并且深度测试将按我的计划进行,但是当我添加对 alphaFunc 的调用以使四边形透明时,深度会恢复到以前的状态。据我所见, glReadPixels 从帧缓冲区读取像素,所以这是有道理的,我只是想知道如何解决这个问题。
我还尝试反转四边形上的绕组,以便从上方看不到它,但这与 glReadPixels 从帧缓冲区获取测量值的问题相同。
简而言之,我如何让 glReadPixels 从对象中获取它的深度分量而不将该对象绘制到屏幕上?
这是对 glReadPixels 和 gluUnProject 的调用:
opengl - 使用像素缓冲区对象 (PBO) 从帧缓冲区对象 (FBO) 读取像素值
我可以使用像素缓冲区对象(PBO)直接从 FBO 读取像素值(即使用 glReadPixels)(即,当 FBO 仍然连接时)?
如是,
- 使用 PBO 和 FBO 的优缺点是什么?
- 以下代码有什么问题
{
以下 glReadPixels 工作正常
以下 glReadPixels 不起作用:(
java - glReadPixels 返回错误值
我尝试获得渲染像素的颜色。
屏幕上有真正的纯红色,但是glReadPixels返回到r很奇怪的值4.6006E-41,为什么???
opengl - glReadPixels 第二次读取失败
以下代码工作正常
但是,当我将 glReadPixels 转移到函数时,它在第一次调用时工作正常,但在第二次调用时失败/读取任何内容:(
几点:线程也一样。只有一个缓冲区。与帧缓冲区对象 (FBO) 以及过剩窗口的行为相同。我也试过 glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS),你可以看到代码被注释了。我也叫 glClear(GL_COLOR_BUFFER_BIT); 在渲染对象()上。
你能帮我吗,哪里可能出错?
编辑:克里斯蒂安..谢谢!你是对的。但是为什么会这样。image.data 上没有带缓冲区的链接,对吗?读完之后?还是...显示窗口接管了 gl 缓冲区的所有权,而我们破坏它时发生了什么问题?