Posted June 27, 201312 yr Hello fellow modders, my name is maxpowa and you may be familiar with the mods that I work on; TukMC and more recently, AdvancedHUD. I'm having issues drawing the outline of a rectangle, rather than filling it completely. I think, but I'm not sure if the issue is simply me failing to understand OpenGL and the Minecraft Tessellator. What I currently have, which is failing to draw an unfilled rectangle: private static void drawOutlineRect(int x, int y, int x1, int y1, int color) { GL11.glPushMatrix(); float f = (float)(color >> 24 & 255) / 255.0F; float f1 = (float)(color >> 16 & 255) / 255.0F; float f2 = (float)(color >> 8 & 255) / 255.0F; float f3 = (float)(color & 255) / 255.0F; Tessellator tessellator = Tessellator.instance; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(f1, f2, f3, f); tessellator.startDrawing(GL11.GL_LINES); tessellator.addVertex((double)x, (double)y, 0.0D); tessellator.addVertex((double)x1, (double)y, 0.0D); tessellator.addVertex((double)x1, (double)y1, 0.0D); tessellator.addVertex((double)x, (double)y1, 0.0D); tessellator.addVertex((double)x, (double)y, 0.0D); tessellator.draw(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } Thanks in advance, maxpowa
June 27, 201312 yr Author So I changed it to not use the tessellator. Still doesn't work. private static void drawOutlineRect(int x, int y, int x1, int y1, int color) { GL11.glPushMatrix(); float f = (float)(color >> 24 & 255) / 255.0F; float f1 = (float)(color >> 16 & 255) / 255.0F; float f2 = (float)(color >> 8 & 255) / 255.0F; float f3 = (float)(color & 255) / 255.0F; GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(f1, f2, f3, f); GL11.glBegin(GL11.GL_LINES); GL11.glVertex2d((double)x, (double)y); GL11.glVertex2d((double)x1, (double)y); GL11.glVertex2d((double)x1, (double)y1); GL11.glVertex2d((double)x, (double)y1); GL11.glVertex2d((double)x, (double)y); GL11.glEnd(); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); }
June 27, 201312 yr yeah btw... the tessellator calls opengl function for you. using the tessellator is using opengl... whats happening when you draw this code? can you send a picture? how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
June 27, 201312 yr could you not just call drawVerticalLine(x, y1, y2, color) and drawHorizontalLine(x1, y, x2, color) to draw each edge individually? seems a lot more simple to me... private static void drawOutlineRect(int x, int y, int x1, int y1, int color) { this.drawHorizontalLine(x, y, x1, color); this.drawHorizontalLine(x, y1 ,x1,color); this.drawVerticalLine(x, y, y1, color); this.drawVerticalLine(x1, y, y1, color); } github
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.