如何在OpenGL中设置背景颜色
Posted
技术标签:
【中文标题】如何在OpenGL中设置背景颜色【英文标题】:How to set background color in OpenGL 【发布时间】:2020-06-06 09:36:11 【问题描述】:我的场景的背景颜色是黑色。我怎样才能改变这种颜色?
看起来我做错了什么,因为glClearColor()
函数不起作用:我尝试更改值但没有任何反应。我是 OpenGL
和一般编程的新手。
#include <GL/glut.h>
void Ayarlar(void);
void CizimFonksiyonu(void);
int main(int argc, char **argv)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(200, 200);
glutInitWindowSize(400, 400);
glutCreateWindow("ilk OpenGL programim");
glutDisplayFunc(CizimFonksiyonu);
glutMainLoop();
Ayarlar();
return 0;
void Ayarlar(void)
glClearColor(1 ,0 ,0 , 1);
glShadeModel(GLU_FLAT);
void CizimFonksiyonu(void)
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
【问题讨论】:
glClearColor()
是故事的第一部分。它定义了清晰的颜色,只有在需要更改清晰的颜色时才需要调用。 glClear(GL_COLOR_BUFFER_BIT)
是实际清除(使用当前清除颜色)的那个。它应该被称为例如在每个渲染步骤的开始。
看了两遍你的源代码(抱歉,我对非英文函数名有点挣扎),我意识到你打电话给glClearColor()
太晚了。在glutMainLoop()
之前做,让它生效。
【参考方案1】:
Ayarlar()
必须被称为glutMainLoop()
。 glutMainLoop
进入 GLUT 事件处理循环并且永远不会返回。您必须在之前设置 OpenGL 状态。
glutDisplayFunc(CizimFonksiyonu);
Ayarlar();
glutMainLoop();
【讨论】:
以上是关于如何在OpenGL中设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章