前两个月捣鼓osg, 回头学opengl,找了一个很简单的中文教程。
cae, hpc 软件开发岗位估计是够不着了。还有些cad的岗位,所以要把opengl混熟。
* OpenGL的平台无关性,窗口管理,输入管理,事件响应都依赖平台提供api.
*基本流程:建模(几何), 上色(渲染), 光栅化(显示)
* gl-前缀, 基本函数; glu-前缀,实用函数;GL-/GLU- 对应常量
*****绘制基本几何*****
* glClear(), 新绘制前清除缓冲区,包括 color, depth, index, add, ...
* glColor(), 设置颜色
* 几何要素绘制,在glBegin(), glEnd() 之间调用,参数可以是: GL_POINTS, GL_LINES, GL_POLYGON, GL_TRIANGLES, GL_QUADS
* glVertex()
* 几何要素属性
* glPolygonMode()
* glCullFace()
* 法向量 glNormal3
*glEnable(GL_NORMALIZE), 法向量归一化
***** 坐标变换******
摆相机-> 摆模型 -> 调焦 -> 拍照片
定位观察空间 -> 定位模型 -> 投影/裁剪 -> 视口变换
坐标系的变换: 世界坐标 -> 相机坐标(视觉坐标) -> 设备坐标 -> 视口坐标
glMatrixMode(), 参数 GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE
glLoadIdentity(), 设置单位矩阵为当前矩阵
glLoadMatrix()
glMultMatrix()
* 视图造型变换(modelview) : 从世界坐标-> 视觉坐标
造型变换函数:glTranslate(), glRotate(), glScale()
视图变换函数: ? 干了什么
* 投影变换 从 视觉坐标 -> 设备坐标
确定取景体积
glFrustum(), 视锥取景
glOrtho(), 正交(正六面体)取景
此即完成了一次取景体积(上下左右前后)的裁剪
* 视口变换 从设备坐标-> 视口坐标
视口,即窗口中的矩形绘图区域, 从3d 模型到 2d 屏幕显示图
glViewPort(),
注意,在视口坐标下,仍然有设备深度坐标(-1.0, 1.0)
% 主要用于cad ,没有光线渲染