Ти шо головой ударился там же учить джаву нужно да и Opengl с GLSL мне бы вот сурсы Акриена фалсер же Recode сделал зачем емуче написать не можешь что ли
public static void drawGlowGradient(float x, float y, float width, float height, int glowRadius, int color1, int color2, int color3, int color4) {
BufferedImage original = null;
GaussianFilter op = null;
glPushMatrix();
GlStateManager.enableBlend();
GlStateManager.disableAlpha();
GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA,
GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE,
GlStateManager.DestFactor.ZERO);
GlStateManager.shadeModel(7425);
GlStateManager.alphaFunc(GL11.GL_GREATER, 0.01f);
width = width + glowRadius * 2;
height = height + glowRadius * 2;
x = x - glowRadius;
y = y - glowRadius;
float _X = x - 0.25f;
float _Y = y + 0.25f;
int identifier = String.valueOf(width * height + width + Math.sin(glowRadius / width * height) * glowRadius + glowRadius).hashCode();
GL11.glEnable(GL11.GL_TEXTURE_2D);
glDisable(GL_CULL_FACE);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GlStateManager.enableBlend();
int texId = -1;
if (shadowCache.containsKey(identifier)) {
texId = shadowCache.get(identifier);
GlStateManager.bindTexture(texId);
} else {
if (width <= 0) {
width = 1;
}
if (height <= 0) {
height = 1;
}
original = new BufferedImage((int) width, (int) height, BufferedImage.TYPE_INT_ARGB_PRE);
Graphics g = original.getGraphics();
g.setColor(Color.white);
g.fillRect(glowRadius, glowRadius, (int) width - glowRadius * 2, (int) height - glowRadius * 2);
g.dispose();
op = new GaussianFilter(glowRadius);
BufferedImage blurred = op.filter(original, null);
texId = TextureUtil.uploadTextureImageAllocate(TextureUtil.glGenTextures(), blurred, true, false);
shadowCache.put(identifier, texId);
}
GL11.glBegin(GL11.GL_QUADS);
RenderUtility.color(color1);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(_X, _Y);
RenderUtility.color(color2);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(_X, _Y + height);
RenderUtility.color(color4);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(_X + width, _Y + height);
RenderUtility.color(color3);
GL11.glTexCoord2f(1, 0); // top right
GL11.glVertex2f(_X + width, _Y);
GL11.glEnd();
GlStateManager.enableTexture2D();
GlStateManager.shadeModel(7424);
GlStateManager.disableBlend();
GlStateManager.enableAlpha();
GlStateManager.resetColor();
glEnable(GL_CULL_FACE);
glPopMatrix();
}
а шейдеР?Не знаю, в чем трабл перенести себе ГлоуУтилку с экспенсива, но держиJava:public static void drawGlowGradient(float x, float y, float width, float height, int glowRadius, int color1, int color2, int color3, int color4) { BufferedImage original = null; GaussianFilter op = null; glPushMatrix(); GlStateManager.enableBlend(); GlStateManager.disableAlpha(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.shadeModel(7425); GlStateManager.alphaFunc(GL11.GL_GREATER, 0.01f); width = width + glowRadius * 2; height = height + glowRadius * 2; x = x - glowRadius; y = y - glowRadius; float _X = x - 0.25f; float _Y = y + 0.25f; int identifier = String.valueOf(width * height + width + Math.sin(glowRadius / width * height) * glowRadius + glowRadius).hashCode(); GL11.glEnable(GL11.GL_TEXTURE_2D); glDisable(GL_CULL_FACE); GL11.glEnable(GL11.GL_ALPHA_TEST); GlStateManager.enableBlend(); int texId = -1; if (shadowCache.containsKey(identifier)) { texId = shadowCache.get(identifier); GlStateManager.bindTexture(texId); } else { if (width <= 0) { width = 1; } if (height <= 0) { height = 1; } original = new BufferedImage((int) width, (int) height, BufferedImage.TYPE_INT_ARGB_PRE); Graphics g = original.getGraphics(); g.setColor(Color.white); g.fillRect(glowRadius, glowRadius, (int) width - glowRadius * 2, (int) height - glowRadius * 2); g.dispose(); op = new GaussianFilter(glowRadius); BufferedImage blurred = op.filter(original, null); texId = TextureUtil.uploadTextureImageAllocate(TextureUtil.glGenTextures(), blurred, true, false); shadowCache.put(identifier, texId); } GL11.glBegin(GL11.GL_QUADS); RenderUtility.color(color1); GL11.glTexCoord2f(0, 0); GL11.glVertex2f(_X, _Y); RenderUtility.color(color2); GL11.glTexCoord2f(0, 1); GL11.glVertex2f(_X, _Y + height); RenderUtility.color(color4); GL11.glTexCoord2f(1, 1); GL11.glVertex2f(_X + width, _Y + height); RenderUtility.color(color3); GL11.glTexCoord2f(1, 0); // top right GL11.glVertex2f(_X + width, _Y); GL11.glEnd(); GlStateManager.enableTexture2D(); GlStateManager.shadeModel(7424); GlStateManager.disableBlend(); GlStateManager.enableAlpha(); GlStateManager.resetColor(); glEnable(GL_CULL_FACE); glPopMatrix(); }
если ты на риче сидишь = RenderUtils.drawBlurredShadow (это одно и тоже)решил спастить гуишку, а для нее drowGlow нужен
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz