添加Opengl转换后,我的图像不断消失

时间:2014-01-30 01:23:42

标签: c++ visual-studio-2010 opengl

如果我添加Opengl转换,我的图像就会消失。

    void renderFileButton()
{
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glViewport(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT);

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    glPushMatrix();
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 320, 0, 240, -1, 1);
    glMatrixMode(GL_MODELVIEW);

    glGenBuffers(1, &vertexBufferID);
    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);
    glBufferData(GL_ARRAY_BUFFER, sizeof(file_vertices), file_vertices,
        GL_STATIC_DRAW);

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, sizeof(fileButtonVertexData), (GLvoid *) 
        offsetof(fileButtonVertexData, fileButtonPositionCoordinates));

    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glTexCoordPointer(2, GL_FLOAT, sizeof(fileButtonVertexData), (GLvoid *) 
        offsetof(fileButtonVertexData, fileButtonTextureCoordinates));

    loadsprite("files/sprites/options.png");

    glScalef(0, 0, 1);
    glRotatef(180, 1, 0, 0);
    glTranslatef(0, 0, 0);

    glPopMatrix();

}

有人能告诉我我在哪里错吗?

2 个答案:

答案 0 :(得分:2)

你缩小了零。这使得对象的大小为零。毫不奇怪,它消失了。

将来,您可以通过一次添加一个转换进行故障排除,并尝试添加不执行任何操作的转换(按1缩放,旋转0,平移0)。然后慢慢增加转换,直到达到预期的值。

此外,您的glPopMatrix正在撤消所有转换。

最后,我没有看到任何实际的渲染。只是很多国家操纵。

答案 1 :(得分:-1)

我昨晚玩完后发现了这个问题。转型令就是问题所在。

glTranslatef(100, 100, 0);
glRotatef(180.0f,0.0f,0.0f,1.0f);
glScalef(-1.0f,1.0f,1.0f);

这就是工作,就是这样。