我正在绘制绑定到 FrameBuffer 的纹理。然后我在一个矩形上使用它,可以移动它以查看纹理的特定区域。
当我在绘制的纹理之外时,我只想拥有一种颜色
我试穿了GL_TEXTURE_WRAP_S/GL_TEXTURE_WRAP_L
GL_MIRRORED_REPEAT
GL_REPEAT
=> 我的纹理周围有颜色,但重复的纹理太近了
GL_CLAMP_TO_EGDE
但这不是我想要的结果。
有什么想法可以帮助我吗?
谢谢。
我不是 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;
}