位图中的X和Y并用Java打开GL

位图中的X和Y并用Java打开GL,java,opengl,Java,Opengl,我对LWJGL和带有位图字符的四边形纹理有问题。 我想显示一个大写的T。T在第6行和第5列。这是从左上角开始的X:40,Y:32px 我使用以下代码: GL11.glTexCoord2f((float) (Math.floor(charID / this.charsInRow) * charSize) / bitmapSize, (float) (Math.floor(charID % this.charsInRow) * charSize) / bitmapSize); GL11.glVer

我对LWJGL和带有位图字符的四边形纹理有问题。 我想显示一个大写的T。T在第6行和第5列。这是从左上角开始的X:40,Y:32px

我使用以下代码:

GL11.glTexCoord2f((float) (Math.floor(charID / this.charsInRow) * charSize) / bitmapSize, (float) (Math.floor(charID % this.charsInRow) * charSize) / bitmapSize);
GL11.glVertex2f((charPosition * fontSize) + x, y);
GL11.glTexCoord2f((float) (Math.floor(charID / this.charsInRow) * charSize + charSize) / bitmapSize, (float) (Math.floor(charID % this.charsInRow) * charSize) / bitmapSize);
GL11.glVertex2f((charPosition * fontSize) + x + fontSize, y);
GL11.glTexCoord2f((float) (Math.floor(charID / this.charsInRow) * charSize + charSize) / bitmapSize, (float) (Math.floor(charID % this.charsInRow) * charSize + charSize) / bitmapSize);
GL11.glVertex2f((charPosition * fontSize) + x + fontSize, y + fontSize);
GL11.glTexCoord2f((float) (Math.floor(charID / this.charsInRow) * charSize) / bitmapSize, (float) (Math.floor(charID % this.charsInRow) * charSize + charSize) / bitmapSize);
GL11.glVertex2f((charPosition * fontSize) + x
                            ,y + fontSize);
但LWJGL计数从右下角开始,因此将显示一个奇怪的ASCII符号


如何才能选择T?

OpenGL标准化纹理坐标从左下角(0,0)开始,到右上角(1,1)。在您的问题中,您使用了错误的方法来处理glyphys-特别是,您应该从底部而不是顶部开始

根据示例图像判断,您的坐标可能应遵循以下格式:

Glyph Bottom Left: (X - <GlyphWidth>, <TextureResY> - Y - <GlyphHeight>)
Glyph Top Right:   (X,                <TextureResY> - Y                )
Glyph左下角:(X-,-Y-)
右上角图示符:(X,-Y)
其中X和Y分别为40和32

此外,您似乎已经转置了行和列