gpt4 book ai didi

opengl - 如何找出我的 OpenGL 可以在其颜色缓冲区上表示多少种颜色?

转载 作者:行者123 更新时间:2023-12-01 10:01:49 27 4
gpt4 key购买 nike

我需要知道我可以在我的 OpenGL 应用程序中使用多少种不同的颜色。

我的情况:我将使用 glReadPixels 读回绘制的像素,但颜色将具有整数含义而不是颜色。所以我需要知道我可以代表多少信息。

我打算用 glGet使用 GL_RED_BITS、GL_GREEN_BITS 和 GL_BLUE_BITS。但这些已被弃用。如何使用至少在 OpenGL 3 中可用的函数来实现这一点?

最佳答案

好吧,我找到了我要找的东西。我的评论 glGetFramebufferAttachmentParameteriv 是正确的,这里有一些引用:

glGetFramebufferAttachmentParameteriv — retrieve information about attachments of a bound framebuffer object



到现在为止还挺好。

If the default framebuffer is bound to target then attachment must be one of GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT, or GL_BACK_RIGHT, identifying a color buffer.



所以是的,我们可以将它用于屏幕缓冲区!现在是您感兴趣的部分:
pname可以是:
  • GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
  • GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
  • GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
  • GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
  • GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE

  • params will contain the number of bits in the corresponding red, green, blue, alpha, depth, or stencil component of the specified attachment. Zero is returned if the requested component is not present in attachment.



    哦, target可以只是 GL_FRAMEBUFFER , 我认为。

    编辑:你要求一个例子来总结它,所以......
    glBindFramebuffer(GL_FRAMEBUFFER, 0);
    GLint ret;

    glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_FRONT_LEFT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &ret);

    if (ret == GL_NONE)
    exit(1); // something is really bad there or FRONT_LEFT isn't your default buffer. Check it!

    glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_FRONT_LEFT, GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, &ret);

    这里是可能的 INVALID_ENUMS你可以得到:

    • GL_INVALID_ENUM is generated if target is not one of the accepted tokens.
    • GL_INVALID_ENUM is generated if pname is not valid for the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE.

    关于opengl - 如何找出我的 OpenGL 可以在其颜色缓冲区上表示多少种颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136820/

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