OpenGL et la transparence
-
Hey

Voila le contexte, je veux mettre un chunk dans une boite translucide et ça fonctionne presque.
Enfait, selon le coté ou je regarde ça marche plus ou moins bien
Voici quelques screens, suivit du code :
Le coté qui va bien :

Les autres :



Voici le code concerné :
private void highligthChunk(ForgeFactionChunk c) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; int xPos = c.xPosition<<4; int zPos = c.zPosition<<4; drawChunkFaceY(player, xPos, zPos); drawChunkFaceX(player, xPos, zPos); drawChunkFaceX(player, xPos+16, zPos); drawChunkFaceZ(player, xPos, zPos); drawChunkFaceZ(player, xPos, zPos+16); } private void drawChunkFaceX(EntityPlayer player, int xPos, int zPos) { if(player.posX < xPos) { GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos); GL11.glVertex3f(xPos,0,zPos); GL11.glVertex3f(xPos,0,zPos+16); GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos+16); }else { GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos+16); GL11.glVertex3f(xPos,0,zPos+16); GL11.glVertex3f(xPos,0,zPos); GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos); } } private void drawChunkFaceY(EntityPlayer player, int xPos, int zPos) { int y = player.worldObj.getActualHeight(); if(player.posY < y) { GL11.glVertex3f(xPos+16,y,zPos+16); GL11.glVertex3f(xPos,y,zPos+16); GL11.glVertex3f(xPos,y,zPos); GL11.glVertex3f(xPos+16,y,zPos); }else { GL11.glVertex3f(xPos+16,y,zPos); GL11.glVertex3f(xPos,y,zPos); GL11.glVertex3f(xPos,y,zPos+16); GL11.glVertex3f(xPos+16,y,zPos+16); } } private void drawChunkFaceZ(EntityPlayer player, int xPos, int zPos) { if(player.posZ < zPos) { GL11.glVertex3f(xPos+16,player.worldObj.getActualHeight(),zPos); GL11.glVertex3f(xPos+16,0,zPos); GL11.glVertex3f(xPos,0,zPos); GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos); }else { GL11.glVertex3f(xPos,player.worldObj.getActualHeight(),zPos); GL11.glVertex3f(xPos,0,zPos); GL11.glVertex3f(xPos+16,0,zPos); GL11.glVertex3f(xPos+16,player.worldObj.getActualHeight(),zPos); } }Avez-vous une petite idée de comment faire pour résoudre ce problème ? Merci

-
Renseigne toi sur le Z-Buffer pour OpenGL, c’est un truc qui apparait souvent quand on fait un render de cube basique, ou les faces passent devant les autres, alors qu’elles sont derrière
-
Il faut aussi dessiner les faces dans l’ordre: les plus loin en premier, les plus proches en dernier en activant GL_ALPHA_TEST et en donnant une valeur de référence pour l’alpha via glAlphaFunc (ou Ref je sais plus) comme 0.001f par exemple.
Essaie ça, cela devrait aider
Sent from my GT-I9000 using Tapatalk 2
Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.
Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.
Grâce à votre participation, ce message peut devenir encore meilleur 💗
S'inscrire Se connecter