热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如果我绘制多个四边形,OpenGLUV坐标会被破坏

如何解决《如果我绘制多个四边形,OpenGLUV坐标会被破坏》经验,为你挑选了1个好方法。

我试图实现位图字体渲染.唯一令我困惑的是,我必须在这里问一下,当我为每个焦点绘制四边形时,每次渲染一个新的四边形时,UV都绝对会被破坏.如果我只渲染一个四边形,一切都OK.

(瓦片x = 3,y = 4)

在此输入图像描述

这是多少字母的样子. 在此输入图像描述

这是我的代码来渲染这些东西:

...
    rc.translate(getTransform().getPos());
    drawTileAt(3, 4);
    rc.translate(100, 0, 0);
    drawTileAt(5, 5);
    rc.translate(200, 0, 0);
    drawTileAt(2,6);
    rc.translate(300,0,0);
    drawTileAt(1, 7);
...

public void drawTileAt(int x, int y)
{
    float w = 1f / 16f;
    float _x = 1f / 16f * x;
    float _y = 1f / 16f * y;
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(0, 100);GL11.glTexCoord2f(_x,_y);
    GL11.glVertex2f(0, 0);GL11.glTexCoord2f(_x + w,_y);
    GL11.glVertex2f(100,0);GL11.glTexCoord2f(_x + w,_y + w);
    GL11.glVertex2f(100, 100);
    GL11.glTexCoord2f(_x,_y + w);
    GL11.glEnd();
}

我也用tex-coords绘制VBO四边形,一切看起来都很好......



1> genpfault..:

glVertex() 捆绑当前顶点状态(如纹理坐标!)并将其发送到GPU.

所以你需要在设置顶点位置之前设置texcoord :

GL11.glTexCoord2f(_x,_y);         GL11.glVertex2f(0, 100);
GL11.glTexCoord2f(_x + w,_y);     GL11.glVertex2f(0, 0);
GL11.glTexCoord2f(_x + w,_y + w); GL11.glVertex2f(100,0);
GL11.glTexCoord2f(_x,_y + w);     GL11.glVertex2f(100, 100);


推荐阅读
author-avatar
梦的影子2502931765
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有