[OpenGL]计算机图形学-3D_room


在学长项目的结构上,初步认识OpenGL里面的一些函数。

Init()

glEnable()

GL_DEPTH_TEST

打开深度测试

GL_COLOR_MATERIAL

执行它后,图形(材料)将根据光线的照耀进行反射

GL_NORMALIZE

根据函数glNormal的设置条件,启用法向量

GL_LIGHTING

启用灯源

GL_LIGHT0

启用0号灯

glClear()

GL_DEPTH_BUFFER_BIT

清除深度缓冲区

GL_COLOR_BUFFER_BIT

清除当前可写的颜色缓冲

Reshape()

glViewport(GLint x,GLint y,GLsizei width,GLsizei height)

x,y 以像素为单位,指定了视口的左下角位置。width,height 表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。

glMatrixMode()

GL_MODELVIEW

对模型视图的操作,接下来的语句来描绘一个模型
视图变换 gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)
该函数定义一个视图矩阵,并与当前矩阵相乘

  • eyex, eyey, eyez 相机在世界坐标系的位置;
  • centerx, centery, centerz 相机镜头对准的物体在世界坐标的位置;
  • upx, upy, upz 相机向上的方向在世界坐标系中的方向;
    可以把相机的位置确定下来

GL_PROJECTION

就像照相一样,把3维物体投影到2维平面上去,接下来可以用glFrustum()gluPerspective()
投影变换 gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar)

  • fovy : 视野在Y-Z平面的角度,范围是[0.0, 180.0];
  • aspect : 投影平面宽度与高度的比率;
  • Near : 近裁剪面到视点的距离
  • Far : 远裁剪面到视点的距离

Display()

灯光

glLightfv()

  • GL_AMBIENT : 环境光成分;
  • GL_DIFFUSE : 漫反射光成分;
  • GL_SPECULAR : 聚光成分;
  • GL_POSITION : 位置
    最后一个参数 w : 0 -> 直射光(directional source),否则是位置光;
  • GL_SPOT_DIRECTION : 照射方向,默认方向 (0, 0, 1);
  • GL_SPOT_EXPONENT : 光线分布,范围是[0, 128],数值越大,越集中,设为0时,等效于均匀分布;
  • GL_SPOT_CUTOFF : 灯光照射的角度范围,数值范围是[0, 90]或180;

反光

glMaterialfv(GL_FRONT,GL_DIFFUSE,@Diffuse)

  1. 决定该材质运用于图元得正面还是反面:
  • GL_FRONT 正面
  • GL_BACK 反面
  • GL_FRONT_AND_BACK 正反两面
  1. 表示对何种光进行设置:
  • GL_DIFFUSE 漫射光,具有方向性,来自一个特定的方向,它根据入射光线的角度在表面上均匀地反射开来;
  • GL_AMBIENT 环境光,并不来自任何特定的方向,会四处反射;
  • GL_AMBIENT_AND_DIFFUSE 环境光和漫射光
  • GL_SPECULAR 平行/镜面光,具有极强的方向性,但它的反射角度很尖锐,只沿一个特定的方向反射;
  • GL_EMISSION 向外散发的光,较弱
  1. 反光率的RGB值,每一项取值都为0~1之间;

平移、旋转

glTranslatef

普通画图

glBegin(GLenum mode)

  • GL_POINTS : 每个顶点作为一个点;
  • GL_LINES : 每个顶点作为一个独立的线段;
  • GL_LINE_STRIP : 一组线段依次相连,不成环;
  • GL_LINE_LOOP : 一组线段依次相连,成环;
  • GL_TRIANGLES : 依次组成三角形,不相连;
  • GL_TRIANGLE_STPIP : 依次组成三角形,相连;
  • GL_QUADS : 依次组成四边形,不相连;
  • GL_QUAD_STRIP : 依次组成四边形,相连;
  • GL_POLYGON : 绘制凸多边形;

猜你喜欢

转载自blog.csdn.net/weixin_44092088/article/details/110749686