0

我正在绘制绑定到 FrameBuffer 的纹理。然后我在一个矩形上使用它,可以移动它以查看纹理的特定区域。

当我在绘制的纹理之外时,我只想拥有一种颜色

我试穿了GL_TEXTURE_WRAP_S/GL_TEXTURE_WRAP_L

GL_MIRRORED_REPEAT 

GL_REPEAT=> 我的纹理周围有颜色,但重复的纹理太近了

GL_CLAMP_TO_EGDE

但这不是我想要的结果。

有什么想法可以帮助我吗?

谢谢。

4

1 回答 1

1

我不是 IOS 开发人员,但您列出的边缘模式(重复、镜像和钳位)是我所知道的所有图形硬件支持,所以我猜 iPhone/iPad GPU 会类似。

如果可以的话,使纹理在每个边界处大 1 个像素(例如,使用 126x126 位图并将其粘贴到透明 128x128 纹理的中间)并使用钳位作为边缘模式。然而,这不会产生锐利的边缘,因为双线性插值仍然会发生。

否则,您必须自己进行数学运算,这意味着如果您的查看矩形到达纹理的边界,您将不得不调整渲染四边形的坐标,而不仅仅是它的纹理坐标,例如。

upperLeftQuad.U = viewRectangle.X / textureWidth;
if(upperLeftQuad.U < 0) {
  upperLeftQuad.X += -(upperLeftQuad.U * textureWidth);
  upperLeftQuad.U = 0;
}

upperRightQuad.U = (viewRectangle.X + viewRectangle.Width) / textureWidth
if(upperLeftQuad.U > 1) {
  upperLeftQuad.X -= (upperLeftQuad.U * textureWidth);
  upperLeftQuad.U = 1;
}
于 2012-05-25T11:23:33.777 回答