首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取像素颜色不准确

获取像素颜色不准确
EN

Stack Overflow用户
提问于 2012-05-04 09:27:19
回答 2查看 604关注 0票数 1

我目前在我的应用程序中使用颜色选择。这在PC上有效,但是我在各种设备上使用它时遇到了问题。

这可能是由于上下文的设置不同,具体取决于设备。例如,据我所知,PC的颜色设置为888,而设备的默认颜色可能为565。

我想知道在OpenGL中是否有一种方法可以获得当前的像素/颜色格式,这样我就可以正确地检索颜色数据?

这是我正在使用的函数,它在PC上运行良好:

代码语言:javascript
复制
inline void ProcessColourPick(GLubyte *out, KDfloat32 x, KDfloat32 y)
{
    GLint viewport[4];
    GLubyte pixel[3];

    glGetIntegerv(GL_VIEWPORT,viewport);

    //Read colour of pixel at a specific point in the framebuffer

    glReadPixels(x,viewport[3]-y,1,1,
        GL_RGB,GL_UNSIGNED_BYTE,(void *)pixel);

    out[0] = pixel[0];
    out[1] = pixel[1];
    out[2] = pixel[2];
}

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-05-04 10:27:30

是的,但这有点复杂。

查询当前帧缓冲区的位深度在ES 2.0中相当容易(注意:这在Desktop GL中也是合法的,但在GL 3.1内核中删除了此功能。它仍然可以从兼容性配置文件访问)。您必须获取每个颜色分量的位深度:

位深;glGetIntegerv(GL_x_DEPTH,& GLint );

其中x是REDGREENBLUEALPHA之一。

一旦有了位深度,就可以测试它是否为565,并使用适当的像素传输参数和颜色值。

票数 1
EN

Stack Overflow用户

发布于 2012-05-04 11:11:17

glReadPixelsformat参数必须是GL_RGBA (始终受支持)或GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES (在不同设备上不同)。这是OpenGL ES的限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10441528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档