java - LWJGL OpenGL使用纹理图集UV坐标绘制文本

标签 java opengl lwjgl

我正在尝试使用纹理四边形在我的 OpenGL 程序中绘制文本。我的纹理尺寸为 256x32,每个字符大约有 6 像素大。 (我每“行”有 42 个字符,共 5 行。)

当生成左上角字符的 UV 坐标时,我这样做:

float textureDelta = 1.0f / 42.0f //0.0238
float u = 0;
float v = 0;

glBegin(GL_QUADS);
glTexCoord2f(u,1-v); glVertex2f(0,0);
glTexCoord2f(u+textureDelta, 1-v); glVertex2f(16,0);
glTexCoord2f(u+textureDela, 1-v + textureDelta); glVertex2f(16,16);
glTexCoord2f(u, 1-v+textureDelta); glVertex2f(0,16);
glEnd();

我遇到的问题是我的 V 坐标似乎完全错误,并且 v 坐标似乎始终位于底部,我该如何解决此问题?

另外,我该如何处理空格?

最佳答案

对于u 坐标来说看起来不错。但由于 v 方向只有 5 行,因此您需要根据行数计算出该坐标的不同增量:

float uDelta = 1.0f / 42.0f;
float vDelta = 1.0f / 5.0f;

glTexCoord2f(u, 1.0f - v); ...
glTexCoord2f(u + uDelta, 1.0f - v); ...
glTexCoord2f(u + uDelta, 1.0f - v + vDelta); ...
glTexCoord2f(u, 1.0f - v + vDelta); ...

关于java - LWJGL OpenGL使用纹理图集UV坐标绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308677/

相关文章:

java - 最佳实践 Springs Kafka Consumer : What kind of message should the consumer receive

java - org.hibernate.QueryException : JPA-style positional param was not an integral ordinal

c++ - 在同一个 VBO OpenGL 上绘制具有不同纹理的不同对象

c++ - OpenGL - 加载具有多个纹理的对象

python - 轨迹球转动不正确

java - Java中从非捕获组中提取捕获组

java - Gradle 与在同一线程中运行的同一类的方法并行运行测试类

java - 在 Windows 8.1 上使用 lwjgl 渲染时闪烁

java - 当我 setBackground(); 时,Slick2d java 游戏崩溃;

java - 50 MB 图像使用 1 GB RAM 作为纹理