我正在为一个类项目进行扫描线渲染。渲染器工作至今,它读取模型(主要使用 utah 茶壶),计算顶点/表面法线,并且可以进行平面和 phong 着色。我现在正在添加纹理映射,这是我遇到问题的地方(除了实际在屏幕上绘制点之外,我不能使用任何 OpenGL 方法)。
因此,我将纹理读入我的应用程序并拥有一个 RGB 值的二维数组。我知道这个概念是将纹理从 2D 纹理空间映射到一个简单的 3D 对象(在我的例子中是一个圆柱体)。然后我现在您将中间表面映射到对象表面上。
但是,我实际上并不知道如何做这些事情:)。我找到了一些将纹理映射到圆柱体的公式,但它们似乎总是遗漏了细节,例如要使用的值。然后我也不知道如何获取对象的顶点坐标并获取该点的圆柱值。还有一些关于映射到圆柱体的其他 StackOverflow 帖子,但它们 1)处理带有着色器等的较新 OpenGL,以及 2)不处理中间表面,所以我不确定如何从它们中翻译知识。
因此,对于使用圆柱体作为中间表面将纹理映射到 3D 对象的伪代码的任何帮助将不胜感激。