[50% OpenGl] GL_DEPTH_TEST просвечивает воду

Статус
В этой теме нельзя размещать новые ответы.
1,239
2
24
В общем,заговнокодил я код что бы при взгляде на свинью ее видно было через блок.
Просвечивает воду,но мне не надо 
b8b944748e.png

Вот код:
Код:
@SubscribeEvent
    public void onEntityRenderPre(RenderLivingEvent.Pre event) {
        if (event.entity instanceof EntityPig) {
            GL11.glMatrixMode(GL11.GL_TEXTURE);
            GL11.glLoadIdentity();
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glEnable(GL11.GL_BLEND);
            final float var7 = 0.5F;
            GL11.glColor4f(var7, var7, var7, 1.0F);
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
            GL11.glDisable(GL11.GL_DEPTH_TEST);

        }
    }
Много лишнего,но вроде логично,я делаю все в мире а не на конкректном мобе.Ок,но почему воду и сундуки тоже просвечивает?
Как дать только мобу этот эффект?Версия 1.7.10
 
Не думал использовать матрицу еще?
GL11.glPopMatrix и тп.

Я тоже на стадии изучения OpenGL, сейчас рисую вертящиеся квадратики xD

#OFFTOP
Нашел либу по загрузкам бон-анимок.
 
Push/PopMatrix. И, если меня не глючит, там иногда еще что-то чистить надо.
 
Код:
@SubscribeEvent
    public void onEntityRenderPre(RenderLivingEvent.Pre event) {
        if (event.entity instanceof EntityPig) {
GL11.glPushMatrix(); //Включаем матрицу
            GL11.glMatrixMode(GL11.GL_TEXTURE);
            GL11.glLoadIdentity();
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glEnable(GL11.GL_BLEND);
            final float var7 = 0.5F;
            GL11.glColor4f(var7, var7, var7, 1.0F);
            GL11.glDisable(GL11.GL_LIGHTING);
            GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
            GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glPopMatrix(); // Выключаем матрицу
        }
    }
 
За комментарии бить буду.
Это сохранение и загрузка матрица из стека.
 
Agravaine написал(а):
Такое есть? о_О
Код:
GL11.glMatrixMode(GL11.GL_TEXTURE);
Даже я на втором дне обучения знаю, что оно есть, но не использую, я линии рисую xDDDDD
#OFFTOP
GL11.glBegin(GL11.GL_LINES);
{
GL11.glVertex2i(100,100)
GL11.glVertex2i(200,200)
}
GL11.glEnd();
 
Из всего ГЛ-кода тут по делу целая одна строка. Перед рендерингом свиньи тест глубины нужно отключить, после - включить.
Код:
    @SubscribeEvent
    public void onEntityRenderPre(RenderLivingEvent.Pre event) {
        if (event.entity instanceof EntityPig) {
            GL11.glDisable(GL11.GL_DEPTH_TEST);
        }
    }

    @SubscribeEvent
    public void onEntityRenderPost(RenderLivingEvent.Post event) {
        if (event.entity instanceof EntityPig) {
            GL11.glEnable(GL11.GL_DEPTH_TEST);
        }
    }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху