使用OpenGL进行纹理映射后的奇怪结果

时间:2015-11-16 10:11:38

标签: c++ opengl opengl-es 3d 2d

  1. 步骤:在2D图像上找到68个地标(使用dlib) 所以我知道每个地标的所有68个坐标!

  2. 创建一个通用面部的3D蒙版(使用OpenGL) - >结果enter image description here

  3. 我也知道脸部模型的所有三维坐标!

    1. 现在我想用this Tutorial纹理贴图从2d图像到3D通用Facemodel的所有三角形
    2. 有谁知道我的问题的答案?如果您需要更多信息,请给我一条消息,我会发给您所需的信息。谢谢大家!

      编辑:找到this tutorial后,我改变了我的照片的大小,以获得宽度和高度为2的幂。 然后划分所有我的图片坐标(地标)大小: 地标(x)/高度和地标(y)/宽度

      图片: enter image description here 结果: enter image description here

      宽度和高度越大,图像定义越好!

1 个答案:

答案 0 :(得分:3)

您看到的内容似乎是您将所有顶点直接传递给glDrawArrays而无需重复使用。因此,每个顶点用于结果中的单个三角形,而不是在原始图片中的6个或更多三角形中使用。

您需要使用元素缓冲区来描述所有三角形是如何由您拥有的顶点组成的,并使用glDrawElements绘制它们。

另请注意,原始图像上的某些多边形实际上不是三角形。您可能希望为这些多边形(眼睛内部)插入其他三角形。