【发布时间】:2014-11-29 00:05:42
【问题描述】:
我正在从事一个图形项目,涉及使用 3D 纹理对以直线网格形式存储的数据进行一些体积渲染,我对 glTexImage3D 的宽度、高度和深度参数有点困惑。对于一维纹理,我知道你可以使用这样的东西:
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, 数据);
其中宽度是每个颜色流的 256 个可能值。在这里,我仍然使用无符号字节形式的颜色(这里纹理的主要目的仍然是插入网格中点的颜色以及透明度),所以对我来说它是有意义的的参数仍然是 256。它是一个 64 X 64 X 64 的网格,所以其中一个参数(也许是深度?)是 64 是有道理的,但我不确定第三个,或者即使我我在正确的轨道上。谁能启发我正确使用这三个参数?我看了这两个讨论,但还是一头雾水:
【问题讨论】:
-
您打算如何从 3D 纹理中渲染日期。 OpenGL 3D 纹理不是“神奇的”体积光栅化器。绘制常规 OpenGL 基元时,您可以从体积中切出“切片”,但它不会自动进行体积渲染。为此,您必须实现某种体积光线投射器或类似的东西。
-
“其中宽度是每个颜色流的 256 个可能值”——完全误解了它的作用。
width(以及高度和深度)参数告诉我们要为纹理分配多少像素。