java - openGL/JOGL : Why do some Textures render "Smoothed" and some not?

标签 java opengl memory-leaks render textures

下面的代码是在我的JOGL练习应用中渲染单个立方体的方法:

        public void render(GL gl)
        {
            texture.enable();

            gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);

            texture.bind(); // textures clockwise from top left when
            // facing

            gl.glBegin(GL.GL_QUADS);

            // north facing side
            if (renderSide[0])
                {
                    gl.glNormal3i(0, 1, 0);
                    gl.glTexCoord2f(0.0f, 0.0f);
                    gl.glVertex3fv(v2, 0);
                    gl.glTexCoord2f(1.0f, 0.0f);
                    gl.glVertex3fv(v1, 0);
                    gl.glTexCoord2f(1.0f, 1.0f);
                    gl.glVertex3fv(v5, 0);
                    gl.glTexCoord2f(0.0f, 1.0f);
                    gl.glVertex3fv(v6, 0);
                }
            // east facing side
            if (renderSide[1])
                {
                    gl.glNormal3i(1, 0, 0);
                    gl.glTexCoord2f(0.0f, 0.0f);
                    gl.glVertex3fv(v3, 0);
                    gl.glTexCoord2f(1.0f, 0.0f);
                    gl.glVertex3fv(v2, 0);
                    gl.glTexCoord2f(1.0f, 1.0f);
                    gl.glVertex3fv(v6, 0);
                    gl.glTexCoord2f(0.0f, 1.0f);
                    gl.glVertex3fv(v7, 0);
                }
            // south facing side
            if (renderSide[2])
                {
                    gl.glNormal3i(0, -1, 0);
                    gl.glTexCoord2f(0.0f, 0.0f);
                    gl.glVertex3fv(v4, 0);
                    gl.glTexCoord2f(1.0f, 0.0f);
                    gl.glVertex3fv(v3, 0);
                    gl.glTexCoord2f(1.0f, 1.0f);
                    gl.glVertex3fv(v7, 0);
                    gl.glTexCoord2f(0.0f, 1.0f);
                    gl.glVertex3fv(v8, 0);
                }
            // west facing side
            if (renderSide[3])
                {
                    gl.glNormal3i(-1, 0, 0);
                    gl.glTexCoord2f(0.0f, 0.0f);
                    gl.glVertex3fv(v1, 0);
                    gl.glTexCoord2f(1.0f, 0.0f);
                    gl.glVertex3fv(v4, 0);
                    gl.glTexCoord2f(1.0f, 1.0f);
                    gl.glVertex3fv(v8, 0);
                    gl.glTexCoord2f(0.0f, 1.0f);
                    gl.glVertex3fv(v5, 0);
                }
            // top side
            if (renderSide[4])
                {
                    gl.glNormal3i(0, 0, 1);
                    gl.glTexCoord2f(0.0f, 0.0f);
                    gl.glVertex3fv(v1, 0);
                    gl.glTexCoord2f(1.0f, 0.0f);
                    gl.glVertex3fv(v2, 0);
                    gl.glTexCoord2f(1.0f, 1.0f);
                    gl.glVertex3fv(v3, 0);
                    gl.glTexCoord2f(0.0f, 1.0f);
                    gl.glVertex3fv(v4, 0);
                }

            gl.glEnd();
            texture.disable();

每个立方体都会调用此代码,每个立方体的初始化都相同,但是某些立方体的纹理处理方式不同且“模糊”,而其余的则不然,

这是一张图片: Top left is wrong!!

这个渲染方法在每个 block 的每一帧都被调用,那么问题是如何永久地出现在单个 block 上的呢?

还有一个附带问题,我的应用程序存在大量内存泄漏,我无法追踪,问题出在这里吗?除了设置相机和光源之外,这是 OpenGL 代码的主要部分!

最佳答案

GL_TEXTURE_MAG_FILTER 是每个纹理对象的状态。绑定(bind)你的纹理对象,然后设置它。

关于java - openGL/JOGL : Why do some Textures render "Smoothed" and some not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7365144/

相关文章:

java - 不理解缺少返回语句

opengl - 使用 gluLookAt() 横向移动; C++

python - glGenVertexArrays Mac OSX PyOpenGL

memory-leaks - PS幸存者空间几乎满了

tomcat:取消部署war文件不会卸载类

java - 遇到私有(private)变量 mAudioManager 从未在我的代码中分配

java - 添加命名空间前缀 Axis2

c++ - 使用 glVertex2i() 绘制图形显示使用 glScaled() 缩放时的人工制品

iphone - 内存警告但事件字节较小

Java:更改二进制数(如 1010)并反转位。 1010 = 0101。0's to 1' 和 1's to 0'