我一直在努力使蠕虫风格破坏地形,到目前为止它已经做得较好......混淆问题与SDL + OpenGL的屏蔽
我已经操纵它,以便以下图像被蒙上了“巧克力”的纹理。
然而,如可以在快照1中可以看出,所述的CircleMask“边缘”仍然可见(相互重叠)。我相当确定它与别名有关,因为蒙版图像在应用之前被拉伸(并且SquareMask.png没有这个问题)。这是我的问题。
我的掩蔽码如下:
void MaskedSprite::draw(Point pos)
{
glEnable(GL_BLEND);
// Our masks should NOT affect the buffers color, only alpha.
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
glBlendFunc(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA);
// Draw all holes in the texture first.
for (unsigned i = 0; i < masks.size(); i++)
if (masks.at(i).mask) masks.at(i).mask->draw(masks.at(i).pos, masks.at(i).size);
// But our image SHOULD affect the buffers color.
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
// Now draw the actual sprite.
Sprite::draw(pos);
glDisable(GL_BLEND);
}
拉伸()函数绘制四其上具有纹理到屏幕上。它没有混合功能。
嘿!你做到了!我做了第二个选择(将我的纹理插值从GL_LINEAR改为GL_NEAREST),并解决了问题。 你不用担心,我已经得到了碰撞部分。谢谢! – Milun
@ user3011203而不是用答案更新问题,而是接受由bcrist给出的答案。 – Joetjah
@Joetjah呃。我的错。对不起,我是新手(如你所见)。 – Milun