繁体   English   中英

JOGL Confusion-纹理如何起作用?

[英]JOGL Confusion- How do textures work?

OpenGL对我来说很混乱,我不习惯许多图形术语,等等。在许多教程中,这非常猖very。 我了解如何绘制三角形,圆形,四边形,多边形等,但是现在我试图了解纹理的工作方式。

有人可以指出我正确的方向来理解纹理吗?

由于只能让JOGL在Netbeans中工作,因此我尝试将名为“ Tiki Mask”的图像放入构建路径。 当我运行它时,它没有引发异常,因此我假设它找到了图像文件?

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函数中将其启用并绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM