如何在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中设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 loadView 中设置背景颜色?

如何在卡片背景中设置多种不同的颜色

如何在html中设置网页背景颜色

如何在 TTTAtributedLabel 中设置范围的背景颜色

如何在所有场景中设置导航栏背景颜色

如何在 NavigationView 中设置列​​表的背景颜色