C++ 当我添加Opengl转换时,我的图像不断消失
如果添加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();
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
会扼杀您所做的任何转换。是的,我感谢您将我推向正确的方向@本沃伊特