OpenGL对我来说非常困惑,我不习惯很多图形术语等等,这在很多教程中非常猖獗。我理解如何绘制三角形,圆形和四边形,多边形等,但现在我正在尝试理解纹理的工作原理。
有人能指出我理解纹理的正确方向吗?
由于我只能让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);
}
答案 0 :(得分:0)
您的问题是您从未绑定加载的纹理。尝试添加以下行:
tex.enable();
tex.bind();
加载纹理后。
另外,我建议在init函数中加载纹理,而不是绘制函数,然后在绘图函数中启用并绑定它们。