Круглые показатели

Версия Minecraft
1.7.10
1,470
19
189
Как сделать типа такого? 

rust_ico.jpg


Для прямых использую drawTexturedModalRect
 
Решение
1ca4138916fe.png

Код:
public void drawStats(double xC, double yC)
 {
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
 double x, y;
 GL11.glColor4f(0.2f, 0.2f, 0.2f, 1);
 Tessellator tess = new Tessellator();
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(xC, yC, 0);
 for(int i = 0;i<=30;i++)
 {
 x = (16*Math.sin(Math.toRadians(i*(360/30)))) + xC;
 y = (16*Math.cos(Math.toRadians(i*(360/30)))) + yC;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 
 float hp = Minecraft.getMinecraft().thePlayer.getHealth();
 float maxHP = Minecraft.getMinecraft().thePlayer.getMaxHealth();
 GL11.glColor4f(1f, 0f, 0f, 1)...
1,470
19
189
Biter7789 написал(а):
Nix13Chanel написал(а):
Biter7789 написал(а):
Nix13Chanel написал(а):
Biter7789 написал(а):
Сделай как я писал,самый простой вариант.-.

Рисовать 100 картинок для кислорода?
Намана же

Ещё по 20 картинок голода/брони и ещё 100 жажды.

Намана :D
:D  

Но всё же...
 
Nix13Chanel написал(а):
Biter7789 написал(а):
Nix13Chanel написал(а):
Biter7789 написал(а):
Nix13Chanel написал(а):
Рисовать 100 картинок для кислорода?
Намана же

Ещё по 20 картинок голода/брони и ещё 100 жажды.

Намана :D
:D  

Но всё же...

Я по другому не умею )))
 
250
12
24
Все легко реализуется
c5547fc258c2.png
f8baa8fd9289.png


Как и говорили уже делается просто через TRIANGLE_FAN

Код:
 int r = 50;
 
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(centerX, centerY, 0);
 for(int vd = 0;vd<segmentsCount;vd++)
 {
 double x = (r*Math.sin(Math.toRadians((vd*3.6)))) + centerX;
 double y = (r*Math.cos(Math.toRadians((vd*3.6)))) + centerY;
 tess.addVertex(x, y, 0);
 }
 tess.draw();


Думаю если не совсем глупый то разберешься:)
 
1,470
19
189
С предметом в руке круг темнеет до чисто чёрного
Немного модифицировал код:
Код:
/**
 * @param centerX 
 * @param centerY
 * @param segmentsCount
 * @param red
 * @param green
 * @param blue
 * @param alpha
 */
 public void drawCircle(double centerX, double centerY, int segmentsCount, int r, float red, float green, float blue, float alpha) { 
 Tessellator tess = Tessellator.instance;
 tess.startDrawing(GL11.GL_TRIANGLE_FAN);
 tess.addVertex(centerX, centerY, 0);
 GL11.glColor4f(red, green, blue, alpha);
 for(int vd = 0;vd<segmentsCount+1;vd++)
 {
 double x = (r*Math.sin(Math.toRadians((vd*3.6)))) + centerX;
 double y = (r*Math.cos(Math.toRadians((vd*3.6)))) + centerY;
 tess.addVertex(x, y, 0);
 }
 tess.draw();
 }


КАроче как рендерить этот круг на текстурой?

Рисую текстуру так:
Код:
		   if(event.type == ElementType.CROSSHAIRS) {
			   mc.getTextureManager().bindTexture(stats);
			   drawTexturedModalRect(0, 0, 0, 0, 60, 60);
		   }
 
1,470
19
189
Dahaka написал(а):
Добавляй в тесселятор вершину с текстурными координатами.

А где взять эти координаты? Просто я с тесселятором не дружу
 
1,470
19
189
Dahaka написал(а):
Дак текстурная такая же, что и вершинная. Радиус можешь подобрать.

Вышла пластинка...

 
1,470
19
189
Мне нужно отрисовать эту текстуру под кругом



С предметом в руках

Без



Если смотреть на облака, круги чисто черные(не прозрачные), на солнце чёрные(полупрозрачные)
 
3,005
192
592
Скорее всего - ты забыл что-то включить и выключить в OpenGL. (На счет изменения с предметом/без него)
 
250
12
24
Попробуй обернуть код в это
Код:
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
.......
GL11.glPopMatrix();
Еще, рисуй индикатор чистым цветом(красный например), а потом рендери текстурку сверху.
 
1,470
19
189
RinKirin написал(а):
Попробуй обернуть код в это
Код:
 GL11.glPushMatrix();
 GL11.glDisable(GL11.GL_TEXTURE_2D);
 GL11.glEnable(GL11.GL_BLEND);
.......
GL11.glPopMatrix();
Еще, рисуй индикатор чистым цветом(красный например), а потом рендери текстурку сверху.

Каким образом рендерить текстуру?
 
Сверху