打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
opengl如何做出漂亮的光照?附代码

要在OpenGL中实现漂亮的光照效果,你可以使用光照模型和材质属性来控制光照的效果。

下面是一个简单的示例代码,展示了如何设置光照和材质属性:

```cpp

#include <GL/glut.h>

void init()

{

// 启用光照

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

// 设置光照参数

GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0};  // 光源位置

GLfloat light_ambient[] = {0.2, 0.2, 0.2, 1.0};   // 环境光强度

GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};   // 散射光强度

GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0};  // 镜面光强度

glLightfv(GL_LIGHT0, GL_POSITION, light_position);

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);

glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);

glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);

// 设置材质属性

GLfloat material_ambient[] = {0.7, 0.7, 0.7, 1.0};   // 环境反射系数

GLfloat material_diffuse[] = {0.8, 0.8, 0.8, 1.0};   // 散射反射系数

GLfloat material_specular[] = {1.0, 1.0, 1.0, 1.0};  // 镜面反射系数

GLfloat material_shininess = 100.0;                  // 高光系数

glMaterialfv(GL_FRONT, GL_AMBIENT, material_ambient);

glMaterialfv(GL_FRONT, GL_DIFFUSE, material_diffuse);

glMaterialfv(GL_FRONT, GL_SPECULAR, material_specular);

glMaterialf(GL_FRONT, GL_SHININESS, material_shininess);

// 设置清屏颜色和观察视角

glClearColor(0.0, 0.0, 0.0, 0.0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(45.0, 1.0, 1.0, 10.0);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

}

void display()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// 绘制一个简单的立方体

glutSolidCube(1.0);

glFlush();

}

int main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize(500, 500);

glutCreateWindow("OpenGL Lighting");

init();

glutDisplayFunc(display);

glutMainLoop();

return 0;

}

```

这段代码使用了OpenGL的固定功能管线来实现光照效果。在`init()`函数中,我们启用了光照并设置了光照参数和材质属性。然后,在`display()`函数中,我们绘制了一个简单的立方体。

另外,你也可以使用现代OpenGL的着色器来实现更复杂和灵活的光照效果。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
《基于MFC的OpenGL编程》Part 9 Lighting
OpenGL中几种光照参数GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR等的简单说明
OpenGL开发 颜色、材料和光照:基础知识
JavaME 3D游戏开发——材质
glViewport()函数和glOrtho()函数的理解(转)
OpenGL基础图形编程(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服