Как правильно настроить глубину

Версия Minecraft
1.6.4
355
2
17
В общем отрисовываю имя над Entity, если не использовать тени в тексте, то все норм. Если использовать тени, то вот такие артефакты
1569590892740.png

Если перед текстом отключить маску, GL11.glDepthMask(false); то артефакты пропадают, но текст уходит за NPC (маску в конце включаю, иначе ломаются скины).

1569590796152.png

Без теней ванильными методами все норм. Как быть?
 
7,099
324
1,510
Тень как делаешь? Два раза вызываешь рендер текста? Если да, то расстояние между текстами в глубину больше сделай
 
7,099
324
1,510
Попробуй два раза рисовать: сначала тень, потому лицевой текст) Скорее всего там под капотом та же проблема: рисуется на одном и том же месте
 
355
2
17
Да но в GUI этот текст рисуется нормально. Это именно в мире такой косяк. А рисовать два раза немного накладно, ранее рисовал таблицы в мире с утилой Slick, и как оказалось, рисовать шрифт в майнкрафте весьма сильно бьет по нагрузке.
 
7,099
324
1,510
А рисовать два раза немного накладно
Там под капотом эта тень не иначе, как двумя разами рисуется. Какая разница, твой код это сделает или чужой?
~~~
Хотя, возможно, там какой-то хитрожопый шейдер или постпроцессинг. Хотя, это маловероятно, с учетом того, что рендер портала в край сделан на костылях
 
355
2
17
Я конкретно не вникал в методы майна и OpenGl, но по крайне мере таблица с тенями ванильная лучше оптимизирована чем та же таблица с двойным шрифтом (тень на фоне) через слак утил.

Мне нужно понять как через эти маски и глубину выставить нормальный приоритет, чтобы оно за НПС не рисовалось
 
Последнее редактирование:

jopi

Попрошайка
1,421
30
260
Щте простите?
Если так, попробуй попросту рисовать текст 2 раза(КОСТЫЛЬ),но в разных Z позициях, их ты можешь отодвинуть гл11
GL11.glTranslatef(0.0F, 0.0F, Zpos);
Zpos на свое, зеленое вперед темнозеленое назад.
 
355
2
17
Я же писал, что ранее делал так, этот костыль оставлю прям совсем на крайний вариант.
Мне нужно конкретно разобраться в этих

Java:
GL11.glDepthMask(false);
GL11.glDisable(GL11.GL_DEPTH_TEST);

Они относительно решают проблему, но и усугубляют создавая новые
 
7,099
324
1,510
расстояние между текстами в глубину больше сделай
Попробуй два раза рисовать: сначала тень, потому лицевой текст)

рисовать текст 2 раза(КОСТЫЛЬ),но в разных Z позициях
Дублирование ответа, кхем
 
7,099
324
1,510
А это одно и тоже вообще-то)
Одно и то же:
я предложил нарисовать тень
два раза рисовать: сначала тень
Одно и то же:
после переместить позицию с помощью гл11 и потом рисовать мейн текст
расстояние между текстами в глубину больше сделай
потому лицевой текст
 
355
2
17
В общем попробовал сделать принципом передний фон-задний фон, и вылезла еще одна проблема.
Как правило цвет тени, это затемненный цвет основного текста. В принципе можно получить затемненную версию осного цвета и передавать её в параметр рендера, только вот в тексте цвета могут меняться и в момент этой смены последующеё затемнение ломается..
 

jopi

Попрошайка
1,421
30
260
А это одно и тоже вообще-то)
Одно и то же:


Одно и то же:
Wikipedia:
x — расстояние от точки P до плоскости yz
y — расстояние от точки P до плоскости xz
z — расстояние от точки P до плоскости xy

z это не глубина, а значит уже не одно и тоже.
Тоже самое, скажешь что d это отверстие, а D это вал и тебе бы кирпич прилетел бы в окно
 
7,099
324
1,510
Текст рисуется "в плоскости экрана". Это значит, что матрица трансформации у него такая же, как у плоскости экрана(либо отличается на смещение). Это значит, что оси x,y лежат в этой плоскости, а z ортогональна ей. Это значит, что ось z задает глубину в данном случае
 
Сверху