我需要OpenGL在不同高度水平之间线性计算的坐标。
我有64 x 64像素大小的高级地图和我提供的与高度图相对应的纹理。此表示大大大于64 x 64 px,因此OpenGL计算了中间值(可能是线性的),因此在3D空间中不会形成任何步骤。
我可以使用这个中间值来最佳地使用行进方格算法,而不是自己执行线性插值,因为显卡已经这样做以将纹理调整到高度。
是否可以使用表示x和y坐标的函数来获取z坐标?
答案 0 :(得分:0)
OpenGL只绘制点,线和三角形。在OpenGL中没有“场景”或“模型”这样的东西。插值仅在基元(=线或三角形)级别上发生。在着色器阶段内可能会发生很多事情,但就OpenGL而言,它对着色器程序的作用完全不可知。您可以使用变换反馈回读顶点着色器的计算。片段着色器的输出是图像(可以使用glReadPixels读取),计算着色器直接在内存上运行。
是否可以使用表示x和y坐标的函数来获取z坐标?
当然,如果你能够在程序中定义Z坐标如何依赖于x,y对和输入数据(=高度图)。所以你作为一个程序员必须编程这个,因此也可以编程如何读回来。 OpenGL对此完全不了解,但为您提供了实现此目的所需的所有低级操作。
OpenGL不是某种“神奇”的几何处理器。