以角度渲染时,角色纹理缺少部件

时间:2014-06-07 11:02:34

标签: c opengl

这是我的第一个使用OpenGL的程序。我写了一个非常简单的文本模块来写入屏幕。它加载角色纹理并渲染它。

我知道我的所有角色都应该有一个很大的纹理,但这次我为每个角色使用了一个64x64纹理。

当相机没有倾斜时,它可以正常工作。但是一旦我应用转换,一些字符就无法正确呈现。这是发生的事情:

enter image description here

我正在使用此代码呈现文本:

typedef struct {
    Renderable renderable;
    const char *buffer;
    float r, g, b;
    float x, y, z;
    float x_scale, y_scale; 
} Text;

static bool render(void *text_ptr, game_clock_t time)
{
    Text *text = text_ptr;
    float position = text->x;

    glShadeModel(GL_SMOOTH);    
    glEnable(GL_TEXTURE_2D);

    for(unsigned int i = 0; text->buffer[i] != '\0'; ++i){  
        glColor3f(text->r, text->g, text->b);
        glBindTexture(GL_TEXTURE_2D, textures[text->buffer[i]].id);
        glBegin(GL_QUADS);      
            glTexCoord2f(0.0f, 1.0f); glVertex3f(position, text->y, -text->z);
            glTexCoord2f(1.0f, 1.0f); glVertex3f(position + text->x_scale, text->y, -text->z);
            glTexCoord2f(1.0f, 0.0f); glVertex3f(position + text->x_scale, text->y + text->y_scale, -text->z);
            glTexCoord2f(0.0f, 0.0f); glVertex3f(position, text->y + text->y_scale, -text->z);
        glEnd();

        position += (float)36/64 * text->x_scale;
    }       

    return false;
}

我在整个游戏中使用的转换:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 16.f / 9.f, 1, 128);
gluLookAt(15, 8, 15, 5, 5, -30 / 2, 0, 1, 0);
glTranslatef(-5, 2, 0);

为什么会这样?我该如何解决?

0 个答案:

没有答案