1

我正在使用最新版本的 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);
4

1 回答 1

1

你得到一个白盒子的原因是因为你的显卡确实支持这么大的图像。1600 x 1600 像素太大了,按照现代标准,1600 x 100 也太大了。我建议你使用 1024 x 128。

为了获得最大的兼容性,我建议您使用具有二次幂的纹理。例如 32 x 64、128 x 512 甚至 1024 x 1024。仅仅因为一个数字可以被 2 整除并不意味着 2 的幂。2 的幂是 2^x。

查找二次幂的提示(计算器):只需输入 [2] [*] [2] [=] [=] [=]... 其中 [] 代表您的输入。

于 2012-09-20T16:14:29.153 回答