如何从图像中获取多边形的OpenGl纹理?

时间:2009-10-24 06:11:15

标签: iphone opengl graphics cocos2d-iphone

我有一个由x,y坐标数组定义的图像和凸多边形。

如何获取多边形所包含的图像部分的Texture2D表示?

基本上我只需要图像中的纹理,使多边形外部的部分变得透明。

如果结果纹理也被裁剪到多边形的宽度和高度,我会做后空翻。

任何指针/片段都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

有趣的是,你的问题用cocos2d和opengl标记,但我会在这里给出一个以OpenGL为中心的答案。我认为你不想创建一个新的纹理对象来达到预期的效果,而是想要使用模板缓冲区。程序如下:

  1. 创建FBO时,请将模板缓冲区附加到其上。
  2. 清除模板缓冲区。
  3. 关闭对颜色和深度缓冲区的写入;打开写入模板。
  4. 渲染多边形,不要打扰纹理。
  5. 重新启用对颜色和深度缓冲区的写入;打开模板测试。
  6. 渲染与多边形边界框对应的纹理四边形。
  7. iPhone 3GS和iPhone模拟器都支持8位模板缓冲区。对于较旧的iPhone,您可以使用帧缓冲区的alpha组件而不是模板缓冲区执行类似的技巧......