Search code examples
javaopengl-esopengl-es-1.1

OpenGL 1.1 Colorize And Outline Objects


I'm making mods for minecraft and I'm adding night vision but is there a way I can change the render of each model using filters?

GL11.glDisable(GL11.GL_TEXTURE_2D);
    Tessellator var7 = Tessellator.instance;
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    var7.startDrawingQuads();
    var7.setTranslation(par1, par3, par5);
    var7.setNormal(0.0F, 0.0F, -1.0F);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.setNormal(0.0F, 0.0F, 1.0F);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.setNormal(0.0F, -1.0F, 0.0F);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.setNormal(0.0F, 1.0F, 0.0F);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.setNormal(-1.0F, 0.0F, 0.0F);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.minX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.setNormal(1.0F, 0.0F, 0.0F);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.minZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.maxY, par0AxisAlignedBB.maxZ);
    var7.addVertex(par0AxisAlignedBB.maxX, par0AxisAlignedBB.minY, par0AxisAlignedBB.maxZ);
    var7.setTranslation(0.0D, 0.0D, 0.0D);
    var7.draw();
    GL11.glEnable(GL11.GL_TEXTURE_2D);

Within this code to allow OpenGL to filter the image and/or outline before it calls the drawing method.


Solution

  • OpenGL is not a scene graph, it's basically just some sophisticated "pen and paper". So you've get to get creative and figure out some drawing scheme that will give you the desired effect.

    That Tesselator class is not part of OpenGL; if I had to make a guess, it's probably part of Minecraft's code. It's for sure possible to add such an effect like you desire, but it's not as simple as "throwing a few switches". I suggest you first to a bit of OpenGL coding "from scratch" yourself to get the idea how OpenGL works. This will give you a much better starting point for making modifications to a complex program.