java - OpenGL 1.1 着色和勾画对象轮廓

标签 java opengl-es opengl-es-1.1

我正在为《我的世界》制作模组,并且正在添加夜视功能,但是有没有办法可以使用滤镜更改每个模型的渲染?

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);

在此代码中,允许 OpenGL 在调用绘图方法之前过滤图像和/或轮廓。

最佳答案

OpenGL 不是场景图,它基本上只是一些复杂的“笔和纸”。因此,您必须发挥创意并找出一些绘图方案来实现所需的效果。

Tesselator 类不是 OpenGL 的一部分;如果我必须猜测的话,它可能是 Minecraft 代码的一部分。当然可以添加您想要的效果,但这并不像“扔几个开关”那么简单。我建议您首先自己“从头开始”进行一些 OpenGL 编码,以了解 OpenGL 的工作原理。这将为您提供一个更好的起点来修改复杂的程序。

关于java - OpenGL 1.1 着色和勾画对象轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735122/

相关文章:

java - 如何检查一个点是否在三角形中?

c++ - 在 Opengl ES 2.0 VBO 中使用 Eigen::Vector3f

java - 从java程序调用类文件

ios - 视频作为 openGLES 的纹理

opengl-es - OpenGLES : How to find Texture Size

matrix - OpenGL ES2.0 模型 View 矩阵 2D

objective-c - 如何绘制具有多个纹理的网格

android - 安卓 : Q texture coordinate not having any effect 上的 OpenGL ES 1.1

java - 如何使用 java_buildpack 向 Cloud Foundry 实例添加额外资源?

java - 在 IntelliJ IDEA 中执行单个 JUnit 测试用例失败