【问题标题】:OpenGL: How can I render a triangle mesh at 10bit (or 12bit or 16bit) channel depth color?OpenGL:如何以 10 位(或 12 位或 16 位)通道深度颜色渲染三角形网格?
【发布时间】:2021-05-25 04:24:35
【问题描述】:

对于视觉研究实验,我有一台支持 10 位/通道(=30 位颜色)的显示器。我想在使用完整位深度的简单场景中渲染三角形网格,并且我想将此渲染保存为 .png 文件。渲染仅适用于单个静态图像,不需要以闪电般的速度进行。

对于三角形网格,我有:

  • xyz 坐标中的顶点列表
  • 包含顶点索引的三角形列表
  • 顶点法线列表
  • 三角形/面法线列表

我的硬件包括(可能不相关)

  • 戴尔 UP3218K 显示器 - 8k 和 10 位/通道
  • GeForce RTX 2080 Super(但如果需要可以提供更好的)

我尝试使用 pyrender 库,但它将渲染的场景输出为 uint8(限制为 8 位)。

我找不到任何 10 位或更高的 OpenGL 或 PyOpenGL 渲染网格的代码示例。随着 >8bit 显示器的日益普及,这肯定是可能的吗?

我可以使用什么来渲染 10 位/通道深度的网格?

编辑更具体的问题:

我有一个三角形网格(点、顶点、法线)。如何在场景中渲染它(在此步骤中不需要显示)并将此渲染保存为 10 位深度的 .png 文件?稍后,我想在 10 位显示器上显示这个 .png。

【问题讨论】:

  • 您是在尝试创建 HDR 上下文/默认帧缓冲区,还是可以自己渲染到浮点 FBO 并将色调映射到 SDR 以供显示?
  • 我对opengl没有经验,但是在查找了默认的帧缓冲区和FBO之后,我相信FBO更适合我想要的。我想取一个三角形网格并渲染它(不需要显示)并将其保存为 10 位/通道 .png 文件。稍后,我想在监视器上显示这些 10 位 .png。我将更新上述问题以更具体。

标签: opengl rendering render mesh pyopengl


【解决方案1】:

创建帧缓冲区对象 (FBO) 时,您可以决定要渲染到哪种类型的缓冲区。大多数应用程序会使用GL_RGBA8 纹理作为颜色缓冲区,但您不必...

Here are a list of all the formats which your graphics driver is required to support。它还可能支持不在此列表中的其他格式,但在此列表中是一些您可能感兴趣的格式:

  • GL_RGB10_A2 - R/G/B 各 10 位,A 2 位 - 每像素 32 位
  • GL_RGBA16 - R/G/B/A 各 16 位 - 每像素 64 位
  • GL_RGBA16F - R/G/B/A 各 16 位 - 每像素 64 位 - 但它们是具有 1 位符号、5 位指数和 10 位尾数的浮点数。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2020-08-30
    • 1970-01-01
    • 2017-06-21
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多