首页 > 解决方案 > OpenGL:如何以 10 位(或 12 位或 16 位)通道深度颜色渲染三角形网格?

问题描述

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

对于三角形网格,我有:

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

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

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

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

编辑更具体的问题:

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

标签: openglrenderingrendermeshpyopengl

解决方案


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

以下是您的图形驱动程序需要支持的所有格式的列表。它还可能支持不在此列表中的其他格式,但在此列表中是一些您可能感兴趣的格式:

  • 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 位尾数的浮点数。

推荐阅读