Opengl形状不画在回调函数
在我的opengl程序中,我想让用户点击某个键时屏幕变成红色。在我my_keyboard
功能,我有以下几点:Opengl形状不画在回调函数
void my_keyboard(unsigned char key, int x, int y) { int feedback_code=0;
if (key == 49) {
feedback_code=1;
}
if (feedback_code==1) {
flash_screen();
}
我flash_screen方法如下:
void screen_flash() { float mat[16];
glGetFloatv(GL_MODELVIEW_MATRIX,mat);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_POLYGON);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.0f, 640.0f);
glVertex2f(888.0f, 640.f);
glVertex2f(888.0f, 0.0f);
glEnd();
}
由glGetFloatv
电话,我知道我的变换矩阵是回到左下角哪里它应该是,在(0,0)点。所以绘图函数应该绘制一个红色方块888x640px,这是我窗口的大小。然而,当我运行程序并按下'1'键时,我没有形状!我使用了断点并确定了GlBegin-GlEnd语句运行,但它们似乎没有产生任何东西。
我唯一的其他形状是在main_loop启动之前调用的主显示函数中完成的。
我在做什么错?
回答:
这是一个常见的新手错误。因此,这里是一般规则:切勿从事件处理程序进行OpenGL绘图调用。决不!
当您想要屏幕上的某些内容发生与输入事件相关的反应时,请设置一些标志变量并发出重绘信号。然后在绘图函数中根据信号绘制。
以上是 Opengl形状不画在回调函数 的全部内容, 来源链接: utcz.com/qa/261262.html