我使用的是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);
答案 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] [=] [=] [=] ...其中[]表示您的输入。