我正在尝试学习JOGL绑定。这些教程似乎已经过时,所以我总是试图将每个教程的有效内容拼凑起来。
我在尝试将简单纹理应用于方形平面时遇到问题。
我的图像是204 X 204,名为box.png。
在我的init()中,我执行以下操作来加载纹理:
try {
InputStream stream = getClass().getResourceAsStream("box.png");
TextureData data = TextureIO.newTextureData(gl.getGLProfile(),
stream, 100, 200, false, "png");
boxTexture = TextureIO.newTexture(data);
} catch (IOException exc) {
exc.printStackTrace();
System.exit(1);
}
然后我尝试应用我的纹理在我的display()中执行以下操作:
gl.glEnable(GL.GL_TEXTURE_2D);
boxTexture.enable(gl);
boxTexture.bind(gl);
gl.glBegin(GL2.GL_QUADS);
// Front Face
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glEnd();
是否有任何明显的问题可以解释我失败的原因?
答案 0 :(得分:2)
我唯一能想到的是纹理不是2的力量。将纹理的大小更改为256x256然后查看它是否有效。根据您的显卡,它将支持或不支持(如果卡不是古代的话应该支持)。