Как рисовать линию в 2D и 3D

Версия Minecraft
1.9-1.10+
1,915
107
372
Как рисовать линию с настраиваемой толщины в 2D и в 3D? Просьба кинуть код. Пробовал многие способы, не работает ничего.
 
Решение
А я вот таким методом использую, чтобы отрисовать грани квадрата:
Код:
	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, то что-то блокирует толщину для GL линий. Альтернатива, вроде как, использовать Tessellator, создать прямоугольник, которая будет направлено лицом к игроку, ширина будет толщиной этой (типа) линий,.
 
Пробовал вот этот код:
Код:
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();
Линия показывается только когда игрок держит этот блок(в блоке tileentity с рендером) в руке :/
timaxa007 помоги пж
 
А я вот таким методом использую, чтобы отрисовать грани квадрата:
Код:
	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.glLineWidth(1F);, но результата у меня ни какого не было на 1.7.10.
 
timaxa007 написал(а):
А я вот таким методом использую, чтобы отрисовать грани квадрата:
Код:
 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.glLineWidth(1F);, но результата у меня ни какого не было на 1.7.10.
Спасибо за код. Но почему линии показываются только тогда, когда я держу этот ItemBlock?
 
Точно не знаю. Можно попробовать чуть по больше сделать размер квадрата и посмотреть результат. Если не помогло, то наверное нужно попробовать для начало отключить текстурирование "GL11.glDisable(GL11.GL_TEXTURE_2D);" перед линиями, затем включить после линий "GL11.glEnable(GL11.GL_TEXTURE_2D);".
Больше предположений нет.


Код:
GL11.glDisable(GL11.GL_TEXTURE_2D);
lines(aabb);
GL11.glEnable(GL11.GL_TEXTURE_2D);
 
Назад
Сверху