如何获得OpenGL在给定高度级别之间计算的值

How to get values OpenGL calculated between given height levels?

本文关键字:之间 计算 高度 OpenGL 何获得      更新时间:2023-10-16

我需要OpenGL在不同高度级别之间线性计算的坐标。

我有一个尺寸为64 x 64 px的高级贴图和一个与高度贴图相对应的纹理。该表示法明显大于64 x 64 px,因此OpenGL计算中间值(可能是线性的),因此在3D空间中不会形成台阶。

我可以使用这个中间值来优化使用行进正方形算法,而不需要自己执行线性插值,因为显卡已经这样做了,可以根据高度调整纹理。

是否可以使用一个声明x和y坐标的函数来获得z坐标?

OpenGL只绘制点、线和三角形。OpenGL中没有所谓的"场景"或"模型"。插值仅发生在基本体(=直线或三角形)级别上。在着色器阶段中,可能会发生很多事情,但就OpenGL而言,它完全不知道着色器程序的作用。您可以使用变换反馈读取顶点着色器的计算。片段着色器的输出是图像(可以使用glReadPixels读取),计算着色器直接在内存上操作。

是否可以使用声明x和y坐标的函数来获得z坐标?

当然,如果您能够在程序中定义Z坐标如何取决于x,y对和输入数据(=高度图)。因此,作为一名程序员,你必须对其进行编程,从而也可以编程如何读回。OpenGL对此完全不可知,但它为您提供了实现此功能所需的所有低级别操作。

OpenGL不是某种"神奇"的几何处理器。