Tuesday 15 April 2014

java - OpenGL Drawing quads in minecraft display weirdly -


I'm trying to draw some quads in Minecraft but im this problem: but it should draw a triangle on each side The total should have 4 triangles, I do not know why it is not working.

  GL11.glPushMatrix (); GL11.glDisable (GL11.GL_LIGHTING); GL11.glDisable (GL11.GL_DEPTH_TEST); GL11.glDepthMask (wrong); GL11.glEnable (GL11.GL_BLEND); GL11.glBlendFunc (GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f (0F, 0.5F, 0.8F, 1F); GL11.glBegin (GL11.GL_QUADS); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX + 1, AP. Possi - Rendermann.RedRopCie, AP.Page - Rendermann.RedderPos); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager.renderPosY, ep.posZ - RenderManager.readers + 1); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glEnd (); GL11.glBegin (GL11.GL_QUADS); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX - 1, ep.posY - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager.renderPosY, ep.posZ - RenderManagerRenderPos- 1); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glEnd (); GL11.glBegin (GL11.GL_QUADS); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX - 1, ep.posY - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager.renderPosY, ep.posZ - RenderManager.readers + 1); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glEnd (); GL11.glBegin (GL11.GL_QUADS); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX + 1, AP. Possi - Rendermann.RedRopCie, AP.Page - Rendermann.RedderPos); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager.renderPosY, ep.posZ - RenderManagerRenderPos- 1); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glEnd (); GL11.glEnable (GL11.GL_DEPTH_TEST); GL11.glDepthMask (true); GL11.glPopMatrix ();    

You probably should close the face: GL11.glDisable (GL11 GL_CULL_FACE); Your triangle may have wrong orientation, so you only see the back face, another solution will be to repeat the triangle (like swapping the first and second head), but since you use transparency You may want to present both front and rear faces. Side note: I do not know if you want to render the triangle then why are you using GL_QUADS, this is the first quad you have posted:

  GL11.glBegin (GL11.GL_QUADS); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glVertex3d (ep.posX - RenderManager.renderPosX + 1, AP. Possi - Rendermann.RedRopCie, AP.Page - Rendermann.RedderPos); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager.renderPosY, ep.posZ - RenderManager.readers + 1); GL11.glVertex3d (ep.posX - RenderManager.renderPosX, ep.posY + ep.height + 0.5D - RenderManager.readPossy, ep.posZ - RenderManager.renderPosZ); GL11.glEnd ();   

There will be equivalent codes using glTranslate and GL_TRIANGLES:

  GL11.glTranslated (ep.posX - RenderManager.renderPosX, ep.posY - RenderManager. RenderPosY, Ep.posZ - RenderManager.renderPosZ); GL11.glBegin (GL11.GL_TRIANGLES); GL11.glVertex3d (0, AP Highight + 0.5D, 0); GL11.glVertex3d (1, 0, 0); GL11.glVertex3d (0, 0, 1); GL11.glEnd (); Keep in mind that you do not need to call  glBegin / glend  for every triangle, you can just type  glVertex3d  3 * N can call bar to present the triangle.   

No comments:

Post a Comment