Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOGL混乱-纹理是如何工作的?_Java_Opengl_Textures_Jogl - Fatal编程技术网

Java JOGL混乱-纹理是如何工作的?

Java JOGL混乱-纹理是如何工作的?,java,opengl,textures,jogl,Java,Opengl,Textures,Jogl,OpenGL对我来说非常混乱,而且我不习惯很多图形术语等,这在很多教程中非常普遍。我知道如何绘制三角形、圆形、四边形、多边形等,但现在我正在尝试理解纹理是如何工作的 有人能给我指出正确的方向来理解纹理吗 因为我只能让JOGL在Netbeans中工作,所以我尝试在构建路径中添加一个名为“Tiki掩码”的图像。当我运行这个时,它没有抛出异常,所以我假设它找到了图像文件 gl.glGenTextures(1, glu, 0); gl.glBindTexture(gl.GL_TEXTURE_2D

OpenGL对我来说非常混乱,而且我不习惯很多图形术语等,这在很多教程中非常普遍。我知道如何绘制三角形、圆形、四边形、多边形等,但现在我正在尝试理解纹理是如何工作的

有人能给我指出正确的方向来理解纹理吗

因为我只能让JOGL在Netbeans中工作,所以我尝试在构建路径中添加一个名为“Tiki掩码”的图像。当我运行这个时,它没有抛出异常,所以我假设它找到了图像文件

gl.glGenTextures(1, glu, 0);
    gl.glBindTexture(gl.GL_TEXTURE_2D, glu[1]);



    try {

        Texture tex = TextureIO.newTexture(new File("tikimask.jpg"), true);
         gl.glBegin(GL.GL_POLYGON);
    gl.glNormal3f(0,0,1);
        gl.glTexCoord2d(-tex.getWidth(), -tex.getHeight());
        gl.glVertex2d(-25, -25);
        gl.glTexCoord2d(-tex.getWidth(), tex.getHeight());
        gl.glVertex2d(1.0f,0);
        gl.glTexCoord2d(tex.getWidth(), tex.getHeight());
        gl.glVertex2d(.05f, .05f);
        gl.glTexCoord2d(tex.getWidth(), -tex.getHeight());
        gl.glVertex2d(0, .05f);
    gl.glEnd();
    gl.glFlush();



    } catch (IOException ex) {
        Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex);
    } catch (GLException ex) {
        Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex);
    }

您的问题是从未绑定加载的纹理。尝试添加以下行:

tex.enable();
tex.bind();
加载纹理后


另外,我建议在init函数中加载纹理,而不是在draw函数中加载纹理,然后在draw函数中启用并绑定纹理。

如果您仍在尝试使用Java学习OpenGL,我建议您。他们应该让你很好地理解纹理和其他OpenGL概念,他们还使用LWJGL,IMHO比JOGL更好。另外,你的问题不是很清楚。你到底不明白什么?