JOGL场景中的白色框与正交投影

时间:2012-09-13 16:12:08

标签: textures jogl orthographic

我使用的是JOGL 2.0的最新版本

我的场景设置了正交投影,我正在尝试在场景底部添加纹理。纹理是一个1600 x 100 PNG文件。

如果我使用1000 x 1000 PNG文件,纹理呈现正常,但当我使用1600 x 100纹理时,我会得到一个白色框。

我使用

设置了正交投影
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glPushMatrix();
gl.glOrtho(0, 1, 0, 1, 0, 1);

gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glPushMatrix();
gl.glLoadIdentity();

我正在使用

加载纹理
texture = TextureIO.newTexture(new File("image.png") ,false);

我正在使用

绘制纹理
gl.glEnable(GL.GL_TEXTURE_2D);
TextureCoords tc = texture.getImageTexCoords();

texture.bind(gl);

gl.glBegin(GL2.GL_QUADS);

gl.glTexCoord2d(tc.left(),tc.top());gl.glVertex2d(0.0,0.1);     
gl.glTexCoord2d(tc.left(),tc.bottom());gl.glVertex2d(0.0,0.0);      
gl.glTexCoord2d(tc.right(),tc.bottom());gl.glVertex2d(1.0,0.0);     
gl.glTexCoord2d(tc.right(),tc.top()); gl.glVertex2d(1.0,0.1);

gl.glEnd();
gl.glDisable(GL.GL_TEXTURE_2D);

1 个答案:

答案 0 :(得分:1)

您获得白色盒子的原因是因为您的显卡支持如此大的图像。 1600 x 1600像素太大了,现代标准1600 x 100太大了。我建议你使用1024 x 128。

为了获得最大的兼容性,我建议你使用2次幂的纹理。例如32 x 64,128 x 512甚至1024 x 1024.仅仅因为数字可被2整除并不意味着2的幂。当你2 ^ x时,2的幂就是。

提示查找两个数字的幂(计算器):只需输入[2] [*] [2] [=] [=] [=] ...其中[]表示您的输入。