- 54
- 1
- 0
Сделал кастомный прицел с помощью тесселятора, учитываю Scale Factor монитора из настроек и разрешения, в итоге в полноэкранном режиме все хорошо, а в маленьком окошке и другом разрешении экрана все косо.Что я делаю не так? разрешение в котором все было хорошо 1280х720 , поставил 1920х1080 и усе..
Код:
int w = event.resolution.getScaledWidth();
int h = event.resolution.getScaledHeight();
int sf = event.resolution.getScaleFactor();
int texSizeX = 1024;
int texSizeY = 1024;
float scale1 = 0.4F * sf;
double gPosX1 = (w + 26 * scale1) / scale1;
double gPosY1 = (h - 18 * scale1) / scale1;
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glScalef(scale, scale, 1);
SMRenderHelper.drawTextureCustomSize(gPosX1, gPosY1, 1, 48, 739, 128, 128, texSizeX, texSizeY);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
Код:
public class SMRenderHelper {
public static void drawTextureCustomSize(double posX, double posY, double posZ, 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), posZ, (double)(startPixX * f4), (double)((startPixY + (float)pieceSizeY) * f5));
tessellator.addVertexWithUV((double)(posX + pieceSizeX), (double)(posY + pieceSizeY), posZ, (double)((startPixX + (float)pieceSizeX) * f4), (double)((startPixY + (float)pieceSizeY) * f5));
tessellator.addVertexWithUV((double)(posX + pieceSizeX), (double)posY, posZ, (double)((startPixX + (float)pieceSizeX) * f4), (double)(startPixY * f5));
tessellator.addVertexWithUV((double)posX, (double)posY, posZ, (double)(startPixX * f4), (double)(startPixY * f5));
tessellator.draw();
}