Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我添加Opengl转换时,我的图像不断消失_C++_Visual Studio 2010_Opengl - Fatal编程技术网

C++ 当我添加Opengl转换时,我的图像不断消失

C++ 当我添加Opengl转换时,我的图像不断消失,c++,visual-studio-2010,opengl,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();

如果添加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();

}

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

你的比例是零。这使对象的大小为零。它消失也就不足为奇了

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

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


最后,我没有看到任何实际的渲染。只是大量的状态操纵。

我昨晚玩了一整晚才发现问题。转型顺序是个问题

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

仅此而已。

显示代码时不进行任何显示内容的转换。我为屏幕上的所有精灵提供了单独的渲染功能。这个函数只是将它全部分组,以便可以在屏幕上显示@BenVoigt@PoppieSolumon:嗯,
glPopMatrix
正在撤消您的所有转换。我也执行了您告诉我的步骤,但只要我将glRotatef和glTranslate添加到聚会中,它就会再次消失。在我看来,缩放值是个问题,就像我在回答中所说的那样。我还确信您对代码的更改比这更多,因为在您展示的代码中,
glPopMatrix
会扼杀您所做的任何转换。是的,我感谢您将我推向正确的方向@本沃伊特