Я пытался сделать Worms стиль разрушаемого местности, и до сих пор это продолжается уже довольно хорошо ...Aliasing проблема с 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