OpenGL - Нарисовать прямоугольник с скругленными углами

Сообщения
74
Лучшие ответы
0
Реакции
3
Java:
            //render Items
            GL11.glPushMatrix();
            GL11.glScalef(2F, 2F, 2F);
            GL11.glEnable(GL12.GL_RESCALE_NORMAL);
            OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);

            RenderHelper.disableStandardItemLighting();
            RenderHelper.enableGUIStandardItemLighting();

            getItemRender().zLevel = 200.0F;
            zLevel = 200.0F;
            i = 0;
            for (Entry<Integer, ElemetItem> entry : hash.entrySet()) {
                if (entry.getValue().item == null) return;
                int offsetX = i % cont;
                int offsetY = i / cont;
                ++i;

                offsetX = x + indent + ((offsetX > 0 ? indent * 2 : 0) + widthElemet) * offsetX;
                offsetY = y + indent + ((offsetY > 0 ? indent * 2 : 0) + heightElemet) * offsetY;

                if (offsetY + scrolY + heightElemet < y) continue;
                if (offsetY + scrolY + heightElemet > y + heightList + heightElemet) break;

                FontRenderer font = entry.getValue().item.getItem().getFontRenderer(entry.getValue().item);
                if (font == null) font = fontRendererObj;
                getItemRender().renderItemAndEffectIntoGUI(font, mc.getTextureManager(), entry.getValue().item, (offsetX + widthElemet/2 - 16) / 2, (offsetY + 2) / 2);
                getItemRender().renderItemOverlayIntoGUI(font, mc.getTextureManager(), entry.getValue().item, (offsetX + widthElemet/2 - 16) / 2, (offsetY + 2) / 2, null);
            }
            zLevel = 0.0F;
            getItemRender().zLevel = 0.0F;

            GL11.glPopMatrix();
            GL11.glEnable(GL11.GL_LIGHTING);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            RenderHelper.enableStandardItemLighting();
Посмотреть вложение 9213
Кстати, не подскажешь, как нарисовать прямоугольник с скругленными краями?)) Пока единственная идея - рисовать 2 прямоугольника, на их пересечениях рисовать по кругу. Прав ли я или есть более простецкий способ?
 
Сообщения
5,256
Лучшие ответы
167
Реакции
935
Можно нарисовать текстуру со скругленными углами и рендерить ее по методу 9-slice scaling
1593354715750.png
Фрагменты 1,3,7,9 не масштабируются, или масштабируются пропорционально
Фрагменты 2,8 масштабируются только по X
Фрагменты 4,6 масштабируются только по Y
 
Сообщения
111
Лучшие ответы
0
Реакции
12
Рисуешь через OpenGL напрямую без использования Tessollator
 
Сообщения
74
Лучшие ответы
0
Реакции
3
Можно нарисовать текстуру со скругленными углами и рендерить ее по методу 9-slice scaling
Посмотреть вложение 9243
Фрагменты 1,3,7,9 не масштабируются, или масштабируются пропорционально
Фрагменты 2,8 масштабируются только по X
Фрагменты 4,6 масштабируются только по Y
Тянуть картинку неинтересно)
 
Сообщения
5,256
Лучшие ответы
167
Реакции
935
ично мне понравилось решить эту задачу в общем случай
 

Ivasik

Porting GrandBombaster
Администратор
Сообщения
3,239
Лучшие ответы
83
Реакции
452
Можно нарисовать текстуру со скругленными углами и рендерить ее по методу 9-slice scaling
Посмотреть вложение 9243
Фрагменты 1,3,7,9 не масштабируются, или масштабируются пропорционально
Фрагменты 2,8 масштабируются только по X
Фрагменты 4,6 масштабируются только по Y
Хрень какая-то растянутая на втором, верхнем скрине получилась :unsure:
 
Сообщения
5,256
Лучшие ответы
167
Реакции
935
На картинке сравнение обычного метода масштабирования и 9-slice
 

Ivasik

Porting GrandBombaster
Администратор
Сообщения
3,239
Лучшие ответы
83
Реакции
452
Тогда норм, хоть бы подписал :/
 
Сверху