glVertex3f缩放问题

glVertex3f Scaling issues

本文关键字:问题 缩放 glVertex3f      更新时间:2023-10-16

OpenGL的新手,请放心。我的任务是在我的学校项目中使用GLFont来渲染文本,我在下面粘贴了它的渲染方法。我已经使用glOrtho将原点设置为窗口的左上角,但这会导致GLFont倒置呈现字符的问题。我需要做的是按-1缩放y,但我不知道如何更改下面的渲染器。有什么想法吗?

void GLFont::RenderText (const char* String, float x, float y, float z, float size)
{
    //Return if we don't have a valid glFont
    if (!ok)
    {
        throw GLFontError::InvalidFont();
    }
    //Get length of string
    int Length = strlen(String);
    //Begin rendering quads
    glBegin(GL_TRIANGLE_STRIP);
    //Loop through characters
    for (int i = 0; i < Length; i++)
    {
        //Get pointer to glFont character
        GLFONTCHAR *Char = &Font.Char[(int)String[i] - Font.IntStart];
        float dx = Char->dx*size;
        float dy = Char->dy*size;
        //Specify vertices and texture coordinates
        glTexCoord2f(Char->tx1, Char->ty2);
        glVertex3f(x, y - dy, z);
        glTexCoord2f(Char->tx1, Char->ty1);
        glVertex3f(x, y, z);
        glTexCoord2f(Char->tx2, Char->ty2);
        glVertex3f(x + dx, y - dy, z);
        glTexCoord2f(Char->tx2, Char->ty1);
        glVertex3f(x + dx, y, z);
        //Move to next character
        x += dx;
    }
    //Stop rendering quads
    glEnd();
}

我建议在代码中反转"char->ty1"answers"char->ty2",而不是缩放:

//Specify vertices and texture coordinates
glTexCoord2f(Char->tx1, Char->ty1);
glVertex3f(x, y - dy, z);
glTexCoord2f(Char->tx1, Char->ty2);
glVertex3f(x, y, z);
glTexCoord2f(Char->tx2, Char->ty1);
glVertex3f(x + dx, y - dy, z);
glTexCoord2f(Char->tx2, Char->ty2);
glVertex3f(x + dx, y, z);

这将导致通过y轴反转纹理贴图。

希望它能有所帮助!

只需翻转投影,即交换您交给glOrthotopbottom参数的值。如果启用了剔除,则还必须将剔除绕组设置为相反的方向。