没有任何东西的纹理

时间:2012-05-25 11:12:47

标签: ios opengl-es textures

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

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

我试过GL_TEXTURE_WRAP_S/GL_TEXTURE_WRAP_L

GL_MIRRORED_REPEAT 

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

GL_CLAMP_TO_EGDE

但这不是我想要的结果。

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

THX。

1 个答案:

答案 0 :(得分:1)

我不是IOS的开发者,但你列出的边缘模式(重复,镜像和钳位)都是我所知道的支持的图形硬件,所以我猜iPhone / iPad的GPU会很相似。

如果可以,请在每个边框处使纹理增大1个像素(例如,使用126x126位图并将其粘贴到透明128x128纹理的中间)并使用clamp作为边缘模式。但是,这不会产生尖锐的边缘,因为仍然会进行双线性插值。

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

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;
}