Прозрачность изображения

53
0
Доброго времени суток.
Сабж: при применении фильтра GL_BLEND и при помещении чего-либо зачарованного (будь то книга, предмет, зелье, etc, в общем то, что имеет анимацию зачарования) в хотбар (именно хотбар) - картинка становится прозрачной.
Без фильтра GL 
KAxV9ZkS41zlm8.jpg

С фильтром 
a2XxQ1NIyDEN2g.jpg

Итак, вопрос - можно ли как-то пофиксить прозрачность? Нет, вариант с просто выпиливанием фильтра не идет, т.к. грубые края картинок мне не очень нравятся.
 
Слушай, у меня вопрос не в тему, я хотела всегда сделать обратное, я не знаток GL, как ты сделал эту прозрачность, обычно у меня картинки с градиентом прозрачным не хотели быть прозрачными и становились не прозрачными и грубыми. Если есть время, можешь пояснить, ну или просто кусочек кодика кинуть с этим, эту строчку, спасибо
[merge_posts_bbcode]Добавлено: 27.10.2014 20:14:59[/merge_posts_bbcode]

Хотя, вроде бы поняла, надеюсь это делается вот таким способом GL11.glEnable(GL11.GL_BLEND);

[merge_posts_bbcode]Добавлено: 27.10.2014 20:17:22[/merge_posts_bbcode]

нет... не работает
 
GL_BLEND - прозрачность.
glEnable(function) - включает function
glDisable(function) - выключает function
Тебе нужно включить прозрачность, следовательно GL11.glEnable(GL11.GL_BLEND);
А если нужно выключить прозрачность - GL11.glDisable(GL11.GL_BLEND);
 
NATALI написал(а):
Слушай, у меня вопрос не в тему, я хотела всегда сделать обратное, я не знаток GL, как ты сделал эту прозрачность, обычно у меня картинки с градиентом прозрачным не хотели быть прозрачными и становились не прозрачными и грубыми. Если есть время, можешь пояснить, ну или просто кусочек кодика кинуть с этим, эту строчку, спасибо
[merge_posts_bbcode]Добавлено: 27.10.2014 20:14:59[/merge_posts_bbcode]

Хотя, вроде бы поняла, надеюсь это делается вот таким способом GL11.glEnable(GL11.GL_BLEND);

[merge_posts_bbcode]Добавлено: 27.10.2014 20:17:22[/merge_posts_bbcode]

нет... не работает
Если честно, то не проверял просто прозрачное изображение нарисовать. Обычно меня напрягают только грубые края, которые должны быть тенями.

GL11.glPushMatrix();
...
GL11.glEnable(3042);
рисуешь картинку;
GL11.glDisable(3042);
...
GL11.glPopMatrix();
 
Спасибо большое, помогли, вроде работает
[merge_posts_bbcode]Добавлено: 27.10.2014 20:30:18[/merge_posts_bbcode]

Meowt, я бы хотела помочь, но не могу, с моими знаниями в этом
 
А если писать GL_BLEND то сразу просто и понятно. Разница лишь в длине, всего лишь 3 символа.
 
0x3E 0x80 0xD3 0x43 0x21 0x00 0x0A 0x0E 0x00 0x3E 0x20 0x80 0x47 0xD3 0x41 0x7E 0xD3 0x40 0x2C 0x0C 0xC2 0x0F 0x08 0xC3 0x09 0x08
Не удержался.
Что, непонятно? А это программка для i8080. Когда я учился на пятом курсе, одному преподу взбрело в голову сделать такую лабораторную работу.
[merge_posts_bbcode]Добавлено: 27.10.2014 22:04:46[/merge_posts_bbcode]

На таком ящике:
VEF_UMK_PP3.059-004_4-300x225.jpg
 
            if (p_78443_2_.hasEffect(p_78443_3_))
            {
                GL11.glDepthFunc(GL11.GL_EQUAL);
                GL11.glDisable(GL11.GL_LIGHTING);
                texturemanager.bindTexture(RES_ITEM_GLINT);
                GL11.glEnable(GL11.GL_BLEND);
                OpenGlHelper.glBlendFunc(768, 1, 1, 0);
                float f7 = 0.76F;
                GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F);
                GL11.glMatrixMode(GL11.GL_TEXTURE);
                GL11.glPushMatrix();
                float f8 = 0.125F;
                GL11.glScalef(f8, f8, f8);
                float f9 = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F;
                GL11.glTranslatef(f9, 0.0F, 0.0F);
                GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
                renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
                GL11.glPopMatrix();
                GL11.glPushMatrix();
                GL11.glScalef(f8, f8, f8);
                f9 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F;
                GL11.glTranslatef(-f9, 0.0F, 0.0F);
                GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F);
                renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
                GL11.glPopMatrix();
                GL11.glMatrixMode(GL11.GL_MODELVIEW);
                GL11.glDisable(GL11.GL_BLEND);
                GL11.glEnable(GL11.GL_LIGHTING);
                GL11.glDepthFunc(GL11.GL_LEQUAL);
            }

Нас интересуют строки
                GL11.glDepthFunc(GL11.GL_EQUAL);
                GL11.glDisable(GL11.GL_LIGHTING);
                GL11.glEnable(GL11.GL_BLEND);
                OpenGlHelper.glBlendFunc(768, 1, 1, 0);
                GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F);
                GL11.glMatrixMode(GL11.GL_TEXTURE);
                GL11.glMatrixMode(GL11.GL_MODELVIEW);
                GL11.glDisable(GL11.GL_BLEND);
                GL11.glEnable(GL11.GL_LIGHTING);
                GL11.glDepthFunc(GL11.GL_LEQUAL);
То есть проблема может быть в включении/отключении только этих режимов.
[merge_posts_bbcode]Добавлено: 27.10.2014 22:38:18[/merge_posts_bbcode]

Попробуй вставить OpenGlHelper.glBlendFunc(770, 771, 1, 0);
 
У меня была похожая фигня, вот что мне ответили:
Hi

The flag you are looking for is probably ALPHA_TEST, assuming you've set the background alpha properly.

Код:
GL11.glPushMatrix();
      GL11.glPushAttrib(GL11.GL_ENABLE_BIT);

        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);

.. do your rendering here

      GL11.glPopAttrib();
      GL11.glPopMatrix();


pushMatrix & popMatrix stops your glTranslate and glRotate from affecting anything drawn after you're done
pushAttrib and popAttrib prevents your changed rendering settings (eg ALPHA_TEST) from affecting vanilla renders after your render

-TGG
 
Asd73 написал(а):
0x3E 0x80 0xD3 0x43 0x21 0x00 0x0A 0x0E 0x00 0x3E 0x20 0x80 0x47 0xD3 0x41 0x7E 0xD3 0x40 0x2C 0x0C 0xC2 0x0F 0x08 0xC3 0x09 0x08
Не удержался.
Что, непонятно? А это программка для i8080. Когда я учился на пятом курсе, одному преподу взбрело в голову сделать такую лабораторную работу.
[merge_posts_bbcode]Добавлено: 27.10.2014 22:04:46[/merge_posts_bbcode]

На таком ящике:
VEF_UMK_PP3.059-004_4-300x225.jpg
Мой ящик круче.
PDP_8_e_Trondheim.jpg

рп.пнг
 
Назад
Сверху