GL11 и прозрачность

Версия Minecraft
1.7.10
1,159
38
544
Добрый день, товарищи. Я хочу реализовать сетку, как на картинке
header.png

Зарендерил парралелипипед, но прозрачность добавить ему не получается. И что интересно, блоки внутри парралелипипеда рендерятся, а насквозь он не просматривается.

Kotlin:
@SubscribeEvent
fun render(e: RenderWorldLastEvent) {
    val doubleX = Minecraft.getMinecraft().thePlayer.posX - 0.5
    val doubleY = Minecraft.getMinecraft().thePlayer.posY + 0.1
    val doubleZ = Minecraft.getMinecraft().thePlayer.posZ - 0.5

    GL11.glPushMatrix()
    GL11.glTranslated(-doubleX, -doubleY, -doubleZ)
    
    GL11.glBegin(GL11.GL_QUADS)
    GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    GL11.glEnable(GL11.GL_BLEND)
    GL11.glEnable(GL11.GL_DEPTH_TEST)
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
    
    GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
    
    GL11.glVertex3f( x1, y1,z2);
    GL11.glVertex3f(x2, y1,z2);
    GL11.glVertex3f(x2, y1, z1);
    GL11.glVertex3f( x1, y1, z1);
    GL11.glVertex3f( x1,y2, z1);
    GL11.glVertex3f(x2,y2, z1);
    GL11.glVertex3f(x2,y2,z2);
    GL11.glVertex3f( x1,y2,z2);
    GL11.glVertex3f( x1, y1, z1);
    GL11.glVertex3f(x2, y1, z1);
    GL11.glVertex3f(x2,y2, z1);
    GL11.glVertex3f( x1,y2, z1);
    GL11.glVertex3f( x1,y2,z2);
    GL11.glVertex3f(x2,y2,z2);
    GL11.glVertex3f(x2, y1,z2);
    GL11.glVertex3f( x1, y1,z2);
    GL11.glVertex3f(x2, y1, z1);
    GL11.glVertex3f(x2, y1,z2);
    GL11.glVertex3f(x2,y2,z2);
    GL11.glVertex3f(x2,y2, z1);
    GL11.glVertex3f( x1, y1,z2);
    GL11.glVertex3f( x1, y1, z1);
    GL11.glVertex3f( x1,y2, z1);
    GL11.glVertex3f( x1,y2,z2);


    GL11.glEnd()
    GL11.glPopMatrix()
}

Вот результат:
Снимок экрана (26).png

С GL'ем работаю первый день, так что не сердчайте. glDisable не выполняю потому что не знаю когда это нужно делать. Подскажите как быть? Как сделать прозрачность?
 
355
2
17
Java:
GL11.glPushMatrix();
GL11.glTranslated(-doubleX, -doubleY, -doubleZ);

GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0f, 0.0F, 0.0F, 0.5f);
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex3f( x1, y1,z2);
GL11.glVertex3f(x2, y1,z2);
GL11.glVertex3f(x2, y1, z1);
GL11.glVertex3f( x1, y1, z1);
GL11.glVertex3f( x1,y2, z1);
GL11.glVertex3f(x2,y2, z1);
GL11.glVertex3f(x2,y2,z2);
GL11.glVertex3f( x1,y2,z2);
GL11.glVertex3f( x1, y1, z1);
GL11.glVertex3f(x2, y1, z1);
GL11.glVertex3f(x2,y2, z1);
GL11.glVertex3f( x1,y2, z1);
GL11.glVertex3f( x1,y2,z2);
GL11.glVertex3f(x2,y2,z2);
GL11.glVertex3f(x2, y1,z2);
GL11.glVertex3f( x1, y1,z2);
GL11.glVertex3f(x2, y1, z1);
GL11.glVertex3f(x2, y1,z2);
GL11.glVertex3f(x2,y2,z2);
GL11.glVertex3f(x2,y2, z1);
GL11.glVertex3f( x1, y1,z2);
GL11.glVertex3f( x1, y1, z1);
GL11.glVertex3f( x1,y2, z1);
GL11.glVertex3f( x1,y2,z2);
GL11.glEnd();

GL11.glDisable(GL11.GL_BLEND);

GL11.glPopMatrix();
Прозрачное.
Однако, тестируя на версии 1.10, он как-то подозрительно моргает, но это такое.
 
1,159
38
544
@Sunrise Спасибо, работает. Но как-то стремное: задняя стенка куба не накладывается цветом на переднюю. Кроме-то куб мигает и дергается при перемещении камеры игрока. Как можно сделать его красивее и исправить эти дефекты?
 
4,045
63
645
Мдя... Прозрачные объекты - моя боль, ибо нет подходящего эвента, в котором их можно было бы отрисовать...
Нарисуешь чуть раньше, не видна жидкость за ними, чуть позже, они не видны за жидкостью... Плюс косяки с дождём и другими полупрозрачными объектами... Да ещё и эта фишка с высотой над и под облаками...
В общем, жесть...
ПыСы, а картинки из откуда?
 
rtex3f(x2, y1, z1); GL11.glVertex3f(x2, y1,z2); GL11.glVertex3f(x2,y2,z2); GL11.glVertex3f(x2,y2, z1); GL11.glVertex3f( x1, y1,z2); GL11.glVertex3f( x1, y1,
Это устаревший и неэффективный способ, намного лучше - сделать vao с позициями вершин
 
7,099
324
1,509
Размер области всегда разный, надо компилить куски грани

Плюс косяки с дождём и другими полупрозрачными объектами...
Отключить z-test на время отрисовки?
 
2,505
81
397
Последнее редактирование:
1,159
38
544
И он оптимизированней, нежели glBegin
А разве тесселятор сам не работает через glBegin?

Ух ребята, ну и накидали вы тут сложных слов. Посоветуйте заодно и мануал.
 
7,099
324
1,509
Можно создать один единичный куб и скейлить model view матрицу.
Плотность прозрачности от этого не будет меняться?

А разве тесселятор сам не работает через glBegin?
Он сначала собирает все вершины, а потом рендерит разом
 

Icosider

Kotliner
Администратор
3,600
99
663
А разве тесселятор сам не работает через glBegin?

Ух ребята, ну и накидали вы тут сложных слов. Посоветуйте заодно и мануал.
Крч, хочешь проще и быстрее сделать такие боксы используй Tesselator, хочешь по современному и войти в графен, то делай через VBO.
 
Сверху