gpt4 book ai didi

c - opengl中的背景颜色

转载 作者:行者123 更新时间:2023-12-01 19:06:24 27 4
gpt4 key购买 nike

我想在按下按钮后更改窗口的背景颜色,但我的程序不起作用,有人可以告诉我为什么吗?

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(300,50);
glutCreateWindow("GLRect");

glClearColor(1.0f, 0.0f, 0.0f, 1.0f); <---

glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutMainLoop();

system("pause");
glClearColor(0.0f, 1.0f, 0.0f, 1.0f); <---

return 0;
}

最佳答案

glClearColor 本身不执行任何清除操作 - 它只是设置实际清除时的颜色。要自行进行清除,您需要使用(至少)COLOR_BUFFER_BIT 调用 glClear

编辑:自从我使用 glut 以来已经有一段时间了,所以这个细节可能是错误的,但如果没记错的话,要改变屏幕颜色以响应按下键盘上的按键,你会做类似的事情这个:

void keyboard (unsigned char key, int x, int y)
{
// we'll switch between red and blue when the user presses a key:
GLfloat colors[][3] = { { 0.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f } };
static int back;

switch (key) {
case 27:
exit(0);
default:
back ^= 1;
glClearColor(colors[back][0], colors[back][1], colors[back][2], 1.0f);
glutPostRedisplay();
}
}

void draw() {
glClear(GL_COLOR_BUFFER_BIT);
// other drawing here...
}

int main() {

// glutInit, glutInitDisplayMode, etc.

glutDisplayFunc(draw);
glutKeyboardFunc(keyboard);
glutMainLoop();
}

基本上,您可以在传递给 glutDisplayFunc 的任何函数中完成所有绘图。几乎任何其他事情都只是更改状态,然后调用 PostRedisplayFunc(); 来告诉 glut 窗口需要重新绘制。警告:正如我所说,自从我使用 glut 以来已经有一段时间了,而且我还没有测试过这段代码。据我所知,它展示了过剩程序的一般结构,但不要指望它能完全按原样工作。

关于c - opengl中的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2898503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com