gpt4 book ai didi

ios - 解释 glReadPixels()

转载 作者:行者123 更新时间:2023-11-29 04:04:59 26 4
gpt4 key购买 nike

经过一个多小时的寻找答案(尝试 Munshi 的“OpenGL ES 2.0 编程指南”中的内容、搜索 Apple 的文档、搜索 StackOverflow),我仍然对如何让 glReadPixels 工作感到困惑。我尝试了很多不同的方法,而我得到的最好的结果是波动的(因此是错误的)结果。

我已经设置了使用着色器将四边形渲染到屏幕的简单情况,并且我已手动将 gl_FragColor 指定为纯红色,因此屏幕上应该绝对没有波动。然后我在 presentRenderbuffer:

之前尝试类似以下代码
GLubyte *pixels = (GLubyte *)malloc(3);

glReadPixels(100, 100, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixels);

NSLog(@"%d", (int)pixels[0]);

free(pixels);

基本上,尝试读取 (100, 100) 处的单个像素并读取它的红色值,我希望该值是 1 或 255。相反,我得到了诸如 1522775、3587 和 65536 之类的值,尽管图像屏幕上的内容永远不会改变。我在 Mac 上做了类似的事情,效果很好,但由于某种原因,我无法让它在 iOS 上工作。在调用 glDrawArrays() 之后和 presentBuffer: 调用之前,我有上述声明(并尝试了我在互联网上遇到的许多变体)。我什至尝试过“OpenGL ES 2.0 编程指南”中的方法,通过查询 glGetIntegerv() 获取帧缓冲区的信息来处理所有读取类型和读取格式的情况。

有什么想法吗?我确信有人会说,“使用搜索功能”,但我已经认真地对此进行了总结,无法进一步深入。感谢您的帮助!

最佳答案

来自 Opengl ES 手册:

Only two format/type parameter pairs are accepted. GL_RGBA/GL_UNSIGNED_BYTE is always accepted, and the other acceptable pair can be discovered by querying GL_IMPLEMENTATION_COLOR_READ_FORMAT and GL_IMPLEMENTATION_COLOR_READ_TYPE.

所以,你最好使用 GL_RGBA 而不是 GL_RGB。

关于ios - 解释 glReadPixels(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com