前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OPengl、DirectX、OPenCV、OpenCL

OPengl、DirectX、OPenCV、OpenCL

作者头像
sofu456
发布2019-10-22 15:59:35
2K0
发布2019-10-22 15:59:35
举报
文章被收录于专栏:sofu456sofu456

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/daoer_sofu/article/details/48548659

###1.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扩展) ###2.DirectX   HLSL:DirectX着色器语言,文件扩展名*.fs   CG:支持Opengl和DirectX的着色器C语言编程 ###3.OpenCV   计算机视觉处理库 ###4.OpenCL(amd显卡程序,cuda nvidia程序)   调用GPU、CPU图形计算的框架,绘图需要OpenGL支持

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档