OPengl、DirectX、OPenCV、OpenCL

Opengl

  GLSL:Opengl着色器语言,在GPU上执行的可编程渲染管线,区别于传统的固定管线,文件扩展名*.glsl。
  OpenGL 1.0 版本中,支持固定管线,而 OpenGL 2.0 版本不再支持固定管线,只支持可编程管线。OpenGL ES是Opengl子集,支持嵌入式设备。OPenGL作为行业标准的接口层,从Windows退出ARB后,window默认的版本始终都是OpenGl 1.1,可以通过工具查询显卡支持的OpenGL版本,同时通过驱动升级提高Windows OpengGL版本(否则有一些异常问题出现)
  OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库
  OPenGL分为:核心模式(不支持以前版本)和兼容模式(支持以前版本的函数)
状态变量
  1.Opengl State Value,保存Opengl中的相关参数设置,如glClearColor设置清除颜色保存在GL_COLOR_BUFFER_BIT变量中,可以把OPengl当做状态机,通过不同的状态变量开关(glEnable、glDisable只有两个状态的变量)控制,实现不同的显示效果。
  2.状态变量分为服务端和客服端变量(变量的存储位置相关),变量需要硬件实现的支持
  https://www.opengl.org/documentation/specs/version1.1/glspec1.1/node12.html#SECTION00520000000000000000
  http://www.glprogramming.com/red/appendixb.html
  http://wwwhome.ewi.utwente.nl/~dennisr/elckerlycjavadoc/hmi/graphics/opengl/GL30_Constants.html
基本设备
1.帧缓冲区(glutInitDisplayMode(多种模式混合设置)):

  a.深度缓冲区(z值越大离相机越远,又称Z缓冲区,GL_DEPTH_BITS)
glGenBuffers创建缓冲区,glBindBuffer绑定缓冲区,glBufferData填充缓冲区
glEnable(GL_DEPTH_TEST)启动深度测试(遮挡关系);glEnable(GL_SCISSOR_TEST)启动裁剪测试(裁剪窗口内进行渲染)glDepthRange(设置z抽范围)
  内存:OPenGL客户端,glEnableClientState
  显卡:OPenGL服务端,glEnable

  b.颜色缓冲区(GL_RED_BITS, GL_GREEN_BITS, GL_BLUE_BITS, GL_ALPHA_BITS,GL_INDEX_BITS)
  c.模板缓冲区(GL_STENCIL_BITS)
  d.累积缓冲区(GL_ACCUM_RED_BITS, GL_ACCUM_GREEN_BITS, GL_ACCUM_BLUE_BITS, GL_ACCUM_ALPHA_BITS)
双缓冲技术,提供非缓冲区到缓冲区的拷贝,提升绘图效率

glflush(提交数据到缓冲区) glfinish(同glflush并等待设备执行完返回)
glClearDepth(像素深度值0~1)
顶点属性
  坐标,颜色,法线,纹理

2.着色器(Shader)

GLSL语言:
  a.变量:bvec2(2个bool值得向量)、mat2x3(2*3浮点数矩阵)、sampler1DShadow(一维深度纹理句柄)、struct结构体、a[ ]数组
  b.修饰符:const常量只读、attribute只读顶点属性、uniform一致变量(只读编译器未知)、varying顶点着色器输出、in输入、out输出、inout、invariant、centorid varying
  c. 内置变量:gl_Color顶点着色器或片段着色器的主颜色

3.坐标系

  世界坐标(WC 屏幕原点)、物体坐标(MC 模型移动时坐标系不变,只是移动模型)、设备坐标(视区或视口DC)、眼坐标(z轴方向VC)
  OpenGL坐标变换栈(ModeView)、正交变换、透视变换(近大远小)
  仿射变换:齐次坐标系,第四分量0表示向量,第四分量1表示点
相关函数
  glViewPort视口设置(视景体变换到视口)
  glOrtho(视景体设置)
  glTranslate(模型坐标系平移)
  glRotate(模型坐标系旋转)
  glScale(模型坐标系缩放)
  glMatrixMode(变换模式设置)
  glloadindentity(移动模型坐标到视口原点)
  glPushMatrix(获取当前栈顶矩阵压栈到新栈中)
  glLoadMatrix(矩阵栈顶重赋值)
  glMultiMatrix(栈顶相乘)
  glGetFloatV(获取矩阵可以保存当前模型矩阵实现多个模型矩阵切换

  glDrawArrays(绘制顶点数组)
  glDrawElements(按索引数组,绘制顶点数组----两个数组)
  glDrawRangeElements(按索引数组,绘制顶点数组的任意段)
OpenGL四种矩阵堆栈
  GL_MODELVIEW(模型变换):gluLookat视口变换
  GL_PROJECTION(投影变换):glFrustum 3D透视投影、-gluPerspective 2D透视投影、glOrtho3D正交投影
  GL_TEXTURE:纹理坐标(glEnable启用)
  GL_COLOR:颜色平面

4.纹理

相关函数
  glGenTextures创建纹理对象索引
  glBindTexture绑定纹理对象
  glTexImage2D对象赋值(像素RGB)
纹理对象
  GL_TEXTURE_1D、GL_TEXTURE_2D、
  GL_TEXTURE_3D、GL_TEXTURE_CUBE_MAP
纹理坐标
  S、T、R三个轴,范围(0~1),超出范围使用glTexParamteri设置,纹理坐标描述纹理与顶点的映射关系 glTexCoord控制坐标、glTexGen纹理坐标自动生成
  (纹理坐标:s\t\r\q(q缩放用)  顶点坐标:x\y\z\w)
多模型贴纹理
  需要同时控制glEnale和glDisable,保证纹理对其他绘制无影响
图片处理:
  http://www.cnblogs.com/IamEasy_Man/archive/2009/12/14/1624062.html

5.光照和材质

法向量 glNormal:
  光照阴影效果CrossVertex向量叉乘,光照下glColor3f等颜色属性失效
材质(glEnable(GL_COLOR_MATERIAL)):
  材料和RGB三原色光照反色后形成的颜色反差。
光源和材质都有三种:
  环境光反射(Ambient),漫反射(Diffuse),镜面反射(Specular)

6.RC渲染上下文和DC设备上下文:

  获取DC,设置像素格式,wglCreateContext通过DC创建RC管线(管道技术),wglMakeCurrent选择当前RC,DC通过GDI接口传递到图形设备(IPC通信:管道|邮槽–内存中进程管理机制,文件映射–磁盘,socket–网卡)
全屏模式
  ChangeDisplaySettings设置系统分辨率,OPenGL没有独占资源的全屏模式,只有窗口模式
  http://blog.csdn.net/pizi0475/article/details/6269844
帧控制
  http://www.cnblogs.com/yxnchinahlj/archive/2010/11/19/1881781.html
绘制图形(推荐使用glut框架入门opengl):
  1.立即模式绘图:glBegin、glvertex、glEnd(固定渲染管线)
  2.顶点数组绘图:glDrawArrays
  3.Display List绘图:glNewList 重复绘制内嵌1或2绘图方式
  4.VBO、IBO、VAO对象绘图:VAO负责顶点属性(glGenVertexArrays​、glDeleteVertexArrays和glBindVertexArray),可以包含多个VBO和IBO,相当于容器,最终对象绑定到Context设备上下文中。(Shader方式的可编程渲染管线)
抗锯齿(glHint):
  GL_POINT_SMOOTH_HINT(点采样glPointSize,启动抗锯齿点是圆的,否则是方的)
  GL_LINE_SMOOTH_HINT(线采样glLineWidth)
  GL_POLYGON_SMOOTH_HINT(多边形采样)
glLineStipple线的点化处理(虚线等)
线的模糊处理,消除锯齿glEnable(GL_BLEND)、glBendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)

  GL_POINTS点、GL_LINES线、GL_TRIANGLES三角形、GL_QUADS四边形、GL_POLYGON多边形
  GL_TRIANGLES_STRIP(偶数顶点n-2\n-1\n,奇数顶点n-1\n-2\n)
  GL_QUAD_STRIP(n\n+1\n+3\n+2)

7.字体:

显示列表(静态方式绘图,提升效率):
  glGenList产生显示列表数组,返回索引,glNewList|glEnd绘制,glCallList调用
字体绘制
  glGenlist生成数组,wglUseFontBitmaps绑定显示列表数组到DC(wglgetcurrentDC获取dc),glCallList单个显示调用(需要循环)
  字体设置两种方法wglUseFontBitmaps、wglUseFontOutline
光栅化:数据转化为计算机可显示的像素格式(设置光栅位置:glRasterPos)
  http://www.cnblogs.com/mattins/p/4126298.html

8.调试(glEnable(GL_DEBUG_OUTPUT)):

1.glGetError获取错误信息
2.gl_ARB_debug_output
3.相关调试工具下载
http://apitrace.github.io/#download

9.Shader工具
  1.RenderMonkey
设备支持:
  1.glview(OpenGL Extensions Viewer)查看OPengl扩展
  2.GPU caps viewer查看OpenGl版本
参考
  http://www.360doc.com/content/14/1028/10/19175681_420522404.shtml
  http://my.oschina.net/sweetdark/blog/172316
  http://my.oschina.net/sweetdark/blog/208024(GLSL)   http://blog.csdn.net/racehorse/article/details/6638455(GLSL example)
  http://blog.csdn.net/zhongjling/article/details/8488844(坐标变换)
  https://msdn.microsoft.com/en-  us/library/windows/desktop/dd368810(v=vs.85).aspx(Opengl 状态变量)
  http://blog.csdn.net/wu_xiangwei/article/details/5519298
  http://blog.sina.com.cn/s/blog_3ca90a0b0101frnv.html(Opengl调试工具)
  http://blog.csdn.net/iduosi/article/details/7835624(绘图相关)
  http://dev.gameres.com/Program/Visual/3D/openglhw.htm(OPengl扩展)

DirectX

在这里插入图片描述
  Direct2d无硬件加速可使用软件实现,Directx 10以后出现DXGI,分离设备相关操作和3d绘图操作。
  HLSL:DirectX着色器语言,文件扩展名*.fs
  CG:支持Opengl和DirectX的着色器C语言编程

OpenCV

  计算机视觉处理库

OpenCL(amd显卡程序,cuda nvidia程序)

  调用GPU、CPU图形计算的框架,绘图需要OpenGL支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪力左手

囧rz

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值