Доброго времени суток! Недавно мне потребовалось отрисовать часть прямоугольной текстурки в виде круга, в виде скругленного прямоугольника и в будущем скорее всего в некоторых других формах. Я почитал различные статьи и наткнулся на эту, где Icosider советует способ с альфа-маской. Я прочел эту статью, получилось следующее:
Вот использованные текстурки
В результате отрисовывается
Я проверил, альфа-буфер работает, посмотрел код VoxelMap - там сделано почти так же, пробовал сделать как там - не работает.
Координаты отрисовки прямоугольников могут немножко пугать, но они правильные, я проверил - если без бленд-функции, и маска, и голова отрисовываются в нужном месте.
Подскажите, пожалуйста, в чем моя ошибка?
Заранее спасибо за помощь!
Отрисовка маски и текстурки головы:
GL11.glEnable(GL11.GL_BLEND);
GL14.glBlendFuncSeparate(GL11.GL_ZERO,GL11.GL_ONE, GL11.GL_SRC_COLOR, GL11.GL_ZERO);
tm.bindTexture(new ResourceLocation("goodgraphiclslib","textures/gui/dark/TABPlayerHeadMask_27x26.png"));
drawTexturedModalRect((int) Math.round((double)getAbsoluteMinX()/scale),(int) Math.round((double)getAbsoluteMinY()/scale),0,0,(int)textureWidth,(int)textureHeight);
GL11.glBlendFunc(GL11.GL_DST_ALPHA, GL11.GL_ONE_MINUS_DST_ALPHA);
tm.bindTexture(texture);
drawTexturedModalRect((int) Math.round((double)getAbsoluteMinX()/scale),(int) Math.round((double)getAbsoluteMinY()/scale),0,0,(int)textureWidth,(int)textureHeight);
GL11.glDisable(GL11.GL_BLEND);
Вот использованные текстурки
В результате отрисовывается
Я проверил, альфа-буфер работает, посмотрел код VoxelMap - там сделано почти так же, пробовал сделать как там - не работает.
Координаты отрисовки прямоугольников могут немножко пугать, но они правильные, я проверил - если без бленд-функции, и маска, и голова отрисовываются в нужном месте.
Подскажите, пожалуйста, в чем моя ошибка?
Заранее спасибо за помощь!