- 1,915
- 107
- 372
Как рисовать линию с настраиваемой толщины в 2D и в 3D? Просьба кинуть код. Пробовал многие способы, не работает ничего.
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
public static void lines(AxisAlignedBB aabb) {
lines(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ);
}
public static void lines(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
GL11.glBegin(GL11.GL_LINE_STRIP);
/*-top-*/
GL11.glVertex3d(minX, maxY, minZ);//a - 1
GL11.glVertex3d(maxX, maxY, minZ);//b - 2
//GL11.glVertex3d(maxX, maxY, minZ);//a - 2
GL11.glVertex3d(maxX, maxY, maxZ);//b - 3
//GL11.glVertex3d(maxX, maxY, maxZ);//a - 3
GL11.glVertex3d(minX, maxY, maxZ);//b - 4
//GL11.glVertex3d(minX, maxY, maxZ);//a - 4
GL11.glVertex3d(minX, maxY, minZ);//b - 1
GL11.glEnd()...
Minecraft mc = Minecraft.getMinecraft();
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
GL11.glColor3ub((byte)255, (byte)0, (byte)0);
GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3f(0, 0, 0);
GL11.glVertex3f(1, 1, 1);
GL11.glEnd();
GL11.glPopMatrix();
public static void lines(AxisAlignedBB aabb) {
lines(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ);
}
public static void lines(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
GL11.glBegin(GL11.GL_LINE_STRIP);
/*-top-*/
GL11.glVertex3d(minX, maxY, minZ);//a - 1
GL11.glVertex3d(maxX, maxY, minZ);//b - 2
//GL11.glVertex3d(maxX, maxY, minZ);//a - 2
GL11.glVertex3d(maxX, maxY, maxZ);//b - 3
//GL11.glVertex3d(maxX, maxY, maxZ);//a - 3
GL11.glVertex3d(minX, maxY, maxZ);//b - 4
//GL11.glVertex3d(minX, maxY, maxZ);//a - 4
GL11.glVertex3d(minX, maxY, minZ);//b - 1
GL11.glEnd();
GL11.glBegin(GL11.GL_LINE_STRIP);
/*-bottom-*/
GL11.glVertex3d(minX, minY, minZ);//a - 1
GL11.glVertex3d(maxX, minY, minZ);//b - 2
//GL11.glVertex3d(maxX, minY, minZ);//a - 2
GL11.glVertex3d(maxX, minY, maxZ);//b - 3
//GL11.glVertex3d(maxX, minY, maxZ);//a - 3
GL11.glVertex3d(minX, minY, maxZ);//b - 4
//GL11.glVertex3d(minX, minY, maxZ);//a - 4
GL11.glVertex3d(minX, minY, minZ);//b - 1
GL11.glEnd();
GL11.glBegin(GL11.GL_LINES);
/*-side-/-edge-*/
GL11.glVertex3d(minX, maxY, minZ);//a
GL11.glVertex3d(minX, minY, minZ);//b
GL11.glVertex3d(maxX, maxY, maxZ);//a
GL11.glVertex3d(maxX, minY, maxZ);//b
GL11.glVertex3d(maxX, maxY, minZ);//a
GL11.glVertex3d(maxX, minY, minZ);//b
GL11.glVertex3d(minX, maxY, maxZ);//a
GL11.glVertex3d(minX, minY, maxZ);//b
GL11.glEnd();
}
Спасибо за код. Но почему линии показываются только тогда, когда я держу этот ItemBlock?timaxa007 написал(а):А я вот таким методом использую, чтобы отрисовать грани квадрата:
И на сколько я знаю, для настройки толщины нужно использовать GL11.glLineWidth(1F);, но результата у меня ни какого не было на 1.7.10.Код:public static void lines(AxisAlignedBB aabb) { lines(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ); } public static void lines(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { GL11.glBegin(GL11.GL_LINE_STRIP); /*-top-*/ GL11.glVertex3d(minX, maxY, minZ);//a - 1 GL11.glVertex3d(maxX, maxY, minZ);//b - 2 //GL11.glVertex3d(maxX, maxY, minZ);//a - 2 GL11.glVertex3d(maxX, maxY, maxZ);//b - 3 //GL11.glVertex3d(maxX, maxY, maxZ);//a - 3 GL11.glVertex3d(minX, maxY, maxZ);//b - 4 //GL11.glVertex3d(minX, maxY, maxZ);//a - 4 GL11.glVertex3d(minX, maxY, minZ);//b - 1 GL11.glEnd(); GL11.glBegin(GL11.GL_LINE_STRIP); /*-bottom-*/ GL11.glVertex3d(minX, minY, minZ);//a - 1 GL11.glVertex3d(maxX, minY, minZ);//b - 2 //GL11.glVertex3d(maxX, minY, minZ);//a - 2 GL11.glVertex3d(maxX, minY, maxZ);//b - 3 //GL11.glVertex3d(maxX, minY, maxZ);//a - 3 GL11.glVertex3d(minX, minY, maxZ);//b - 4 //GL11.glVertex3d(minX, minY, maxZ);//a - 4 GL11.glVertex3d(minX, minY, minZ);//b - 1 GL11.glEnd(); GL11.glBegin(GL11.GL_LINES); /*-side-/-edge-*/ GL11.glVertex3d(minX, maxY, minZ);//a GL11.glVertex3d(minX, minY, minZ);//b GL11.glVertex3d(maxX, maxY, maxZ);//a GL11.glVertex3d(maxX, minY, maxZ);//b GL11.glVertex3d(maxX, maxY, minZ);//a GL11.glVertex3d(maxX, minY, minZ);//b GL11.glVertex3d(minX, maxY, maxZ);//a GL11.glVertex3d(minX, minY, maxZ);//b GL11.glEnd(); }
GL11.glDisable(GL11.GL_TEXTURE_2D);
lines(aabb);
GL11.glEnable(GL11.GL_TEXTURE_2D);
В TileEntitySpecialRendererAgravaine написал(а):Потому что ты наверное рисуешь свои линии в рендере предмета?