c++ - OpenGL闪电

标签 c++ opengl

在 OpenGL 中启用照明后,线条和多边形中的颜色不再渲染。 (从 glColor3f() 创建颜色)

这是代码:

        glLightModelf(GL_LIGHT_MODEL_AMBIENT, GL_TRUE);
        GLfloat light1_position[] = { 5000, 2000, 1000,1 };
        glEnable(GL_LIGHT0);
        glLightfv(GL_LIGHT0, GL_POSITION, light1_position);
        GLfloat light_ambient[] = { 1,1,1,1 };
        glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
        glEnable(GL_LIGHTING);

我做错了什么?

最佳答案

您必须在使用它们之前启用这些东西:

glEnable ( GL_LIGHTING);
glEnable( GL_COLOR_MATERIAL); 
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glShadeModel( GL_SMOOTH);

关于c++ - OpenGL闪电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961315/

相关文章:

c++ - 在 C++11 中将映射函数添加到 vector

c++ - MFC 自定义控件背景/文字颜色

c++ - 如何在 QML 中创建 Q_GADGET 结构的新实例?

c++ - 使用 glCreateBuffers 时出现访问冲突错误

opengl - gluortho2d 和 glViewport 之间的实际区别是什么

c# - 如何在 C# GUI 中嵌入 C OpenGL 应用程序?

c++ - 增加程序运行的堆栈大小

c++ - 未命中断点但已加载符号

java - 如何将元素映射到 OpenGL VBO 中的颜色?

OpenGL VBO 着色器