- 1,185
- 2
Добрый день, тут я расскажу как правильно располагать текстуры в наложениях (Хот-бары, шкалы, интерфейсы и т.п.).
Уверен большинство из нас это знают, но так-же уверен что эта тема отлично поможет новичкам. Это больше сборник кода, чем туториал.
Получить расширение окна:
Код рендера текстуры определённого размера:
Текстура в углу:
Текстура по центру:
Oтцентровка текстуры при glScale:
Oтцентровка текста:
Уверен большинство из нас это знают, но так-же уверен что эта тема отлично поможет новичкам. Это больше сборник кода, чем туториал.
Получить расширение окна:
Код:
//RenderGameOverlayEvent e
int w = e.resolution.getScaledWidth();
int h = e.resolution.getScaledHeight();
Код рендера текстуры определённого размера:
Код:
public static void drawTextureCustomSize(double posX, double posY, double startPixX, double startPixY, double pieceSizeX, double pieceSizeY, float sizeTextureX, float sizeTextureY)
{
float f4 = 1.0F / sizeTextureX;
float f5 = 1.0F / sizeTextureY;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)posX, (double)(posY + pieceSizeY), 0.0D, (double)(startPixX * f4), (double)((startPixY + (float)pieceSizeY) * f5));
tessellator.addVertexWithUV((double)(posX + pieceSizeX), (double)(posY + pieceSizeY), 0.0D, (double)((startPixX + (float)pieceSizeX) * f4), (double)((startPixY + (float)pieceSizeY) * f5));
tessellator.addVertexWithUV((double)(posX + pieceSizeX), (double)posY, 0.0D, (double)((startPixX + (float)pieceSizeX) * f4), (double)(startPixY * f5));
tessellator.addVertexWithUV((double)posX, (double)posY, 0.0D, (double)(startPixX * f4), (double)(startPixY * f5));
tessellator.draw();
}//p.s. лень было удалять скобки и касты.
Код:
RenderHelper.drawTextureCustomSize(0, 0, startPixX, startPixY, pieceSizeX, pieceSizeY, sizeTextureX, sizeTextureY);//Верхний левый угол
RenderHelper.drawTextureCustomSize(w - pieceSizeX, 0, startPixX, startPixY, pieceSizeX, pieceSizeY, sizeTextureX, sizeTextureY);//верхний правый угол
RenderHelper.drawTextureCustomSize(w - pieceSizeX, h - pieceSizeY, startPixX, startPixY, pieceSizeX, pieceSizeY, sizeTextureX, sizeTextureY);//нижний правый угол
RenderHelper.drawTextureCustomSize(0, h - pieceSizeY, startPixX, startPixY, pieceSizeX, pieceSizeY, sizeTextureX, sizeTextureY);//Нижний левый угол
Код:
RenderHelper.drawTextureCustomSize((w - pieceSizeX)/2, (h - pieceSizeY)/2, startPixX, startPixY, pieceSizeX, pieceSizeY, sizeTextureX, sizeTextureY);
Код:
float scale = 0.7F //Percent scale;
double posX = (w - pieceSizeX*scale)/scale; //Рендер тексуры справа
GL11.glPushMatrix();
GL11.glScalef(scale, scale, 1);
//Draw
GL11.glPopMatrix();
Код:
String text = "svk";
drawString(font, text, posX, posY, new Color(255, 0, 0).getRGB()); //Текст слева направо
drawString(font, text, posX - font.getStringWidth(text)/2, posY, new Color(255, 0, 0).getRGB()); //Текст по центру
drawString(font, text, posX - font.getStringWidth(text), posY, new Color(255, 0, 0).getRGB()); //Текст справа налево.