使用Camera2 API实现相机预览样板代码太多了,偷一波懒,CV大法发动。。。...CameraCaptureSession.StateCallback() { // ... }, null) 这样相机预览会不停的更新到这个surface上,最后显示到屏幕上(至于是如何显示到...) 关联OpenGL 创建EGL环境,绑定输出到textureView持有的SurfaceTexture上; 创建Session的时候传递一个关联了OES纹理的surface,当预览数据更新时,将数据更新到纹理上...; GL操作OES纹理,绘制到绑定的输出即可. 1....绘制 当SurfaceTexture的onFrameAvailable回调,也就是有新的预览数据生成时,将图像数据更新到OES纹理上,然后使用GL采样纹理绘制即可 // Update image starem
实验环境:win10、VS 2017、OPenGL库 实验一 基于OpenGL的二维图形绘制 要求 编程实现绘制一个五角星(基于OpenGL),效果如下图所示 图片 问题分析 可以将一个五角星划分为...10个三角形,假设五角星的各边长,分别计算出10个定点的坐标,然后逐个绘制三角形,将其拼接为五角星; 图片 也可以利用参数方程,如下图所示,设大圆和小圆的半径分别为R、r,已知夹角为37度,在循环中计算绘制三角形...图片 代码 ProjectOne.cpp #include //OpenGL库 #include glut.h>//OpenGL辅助库 #include GLUT_DOUBLE);//双缓冲,单缓冲为GLUT_SINGLE glutCreateWindow("五角星绘制");//创建窗口,参数为窗口标题 init(); glutDisplayFunc...// #include #include //OpenGL库 #include glut.h>//OpenGL辅助库 #include <math.h
今天我们开始学习Opengl编程。 在学习之前,我们要开始配置Opengl,我这里使用的是VS2010,语言是C++。 Opengl是C++的一个拓展包,用来进行计算机图形方面的编程。...Opengl实用工具库(Opengl Utility Tooklit, GLUT)是独立于窗口系统的工具包,可以隐藏不同窗口系统API所带来的复杂性。...配置好环境,就开始学习如何使用Opengl编程。 第一步就是要导入glut.h头文件。...我们只需要在g lBegin()和glEnd()函数里设置我们所需要绘制的点,然后在glBegin参数里使用 GL_POLYGON,即为画凸多边形(为什么设为 GL_POLYGON?...因为当我们所画的点足够多的时候,就能够近似看做曲线),而后Opengl会把glBegin和glEnd里面所有绘制的点依次相连然后填充其内部,就得到了我们所需要绘制的心形线。
最近忙于paper,就没有写博客;然后开始和华为合作一个项目,学习如何使用openGL 转自:https://blog.csdn.net/huangkangying/article/details/82022177...使用 apt 安装 OpenGL 和开发包 sudo apt-get install build-essential libgl1-mesa-dev sudo apt-get install freeglut3...绘制一个OpenGL窗口,并显示一个加以光照的球。...函数,绘制一个球*/ void display ( void ) { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutSolidSphere...初始化函数 */ init ( ); /* 注册OpenGL绘图函数 */ glutDisplayFunc ( display ); // /* 进入GLUT消息循环,开始执行程序
); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(300, 100); glutInitWindowSize...线段的渲染效果如下: 创建多边形 上面我们已经用线段勾勒出一个五角星了,不过还都是点和线的操作,这部分我们来绘制一个多边形(包括三角形、四边形)。...: 完整程序 main.cpp /* ** 绘制线段、多边形和三角形(理解点、线、面,会绘制各种图元) */ #include glut.h> void lines() { int p1[...init(); glutDisplayFunc(polgonTriangle); //传递需要的函数 glutMainLoop(); return 0; } Ubuntu端创建多面体 # 安装opengl..."First OpenGL Program"); glutDisplayFunc(&myDisplay); glutIdleFunc(&myIdle); //空闲调用 glutMainLoop
OpenGL辅助库函数:OpenGL Utility Toolkit (GLUT)包含31个函数,以”aux“作为前缀,但它们不能在所有的OpenGL平台上使用。...OpenGL的辅助库函数主要用于窗口管理、输入输出处理以及绘制一些简单的三维形体。...表示清除颜色 glClear(GL_COLOR_BUFFER_BIT); // 设置颜色,三个参数分别为RGB glColor3f(0.0f, 1.0f, 1.0f); // 绘制矩形...main(int argc, char* argv[]) { // 对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次 glutInit(&argc, (char**)...argv); // 设置显示方式,其中GLUT_RGB表示使用RGB颜色,GLUT_SINGLE表示使用单缓冲 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE
核心库 GL 3.2 OpenGL 实用库 GLU 3.3 OpenGL 工具库 GLUT 3.4 Windows 专用库 WGL 4 开始 OpenGL 的奇幻之旅 4.1 OpenGL 基本图形的绘制...绘制一个或多个四边形 GL_QUAD_STRIP 绘制连续四边形 4.2 第一个 OpenGL 程序 通常,我们使用工具库(GLUT)创建 OpenGL 应用程序。...使用工具库(GLUT)创建 OpenGL 应用程序只需要四步(当然,前提是你需要先准备好绘图函数,并给它取一个合适的名字): 初始化glut库 创建glut窗口 注册绘图的回调函数 进入glut主循环...指定双缓存窗口 GLUT_ACCUM 窗口使用累加缓存 GLUT_ALPHA 窗口的颜色分量包含 alpha 值 GLUT_DEPTH 窗口使用深度缓存 GLUT_STENCIL 窗口使用模板缓存 GLUT_MULTISAMPLE...《OpenGL编程精粹》杨柏林 陈根浪 徐静 编著 Opengl开发库介绍 OpenGL的API函数使用手册 glut处理鼠标事件 Learn OpenGL 本文写作过程持续了两三周,期间可谓呕心沥血。
如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。 2、强大的可移植性。...我选择Visual Studio 2008和VC6++作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。...Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接...“太阳” glColor3f(1.0f, 0.0f, 0.0f); glutSolidSphere(69600000, 20, 20); // 绘制蓝色的“地球” glColor3f(0.0f,..., 0.0f, 0.0f, -1.0f); glTranslatef(150000000, 0.0f, 0.0f); glutSolidSphere(15945000, 20, 20); // 绘制黄色的
在跨平台的编程实例和演示中,aux很大程度上已经被glut库取代。OpenGL中的辅助库不能在所有的OpenGL平台上运行。 辅助库函数主要包括以下几类。...OpenGL工具库 OpenGL Utility Toolkit 包含大约30多个函数,函数名前缀为glut。...函数以glut开头,它们作为aux库功能更强的替代品,提供更为复杂的绘制功能,此函数由glut.dll来负责解释执行。...扩展源由扩展函数的后缀来指明(或使用扩展常量后缀)。例如,后缀WIN表明一个符合Windows规范的扩展,EXT或ARB后缀表明该扩展由多个卖主定义。...,应该优先使用ARB扩展 EXT – 多家OpenGL厂商同意支持的扩展 HP – Hewlett-Packard 惠普 IBM – International Business Machines KTX
值得一提的是,OpenGL 可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。...二、第一个 OpenGL 程序 通常,我们使用工具库(GLUT)创建 OpenGL 应用程序。为啥不用 GL 或者 GLU 库呢?画画之前总得先有一块画布吧,不能直接拿起画笔就开画。...使用工具库(GLUT)创建 OpenGL 应用程序只需要四步(当然,前提是你需要先准备好绘图函数,并给它取一个合适的名字): 初始化glut库 创建glut窗口 注册绘图的回调函数 进入glut主循环...使用双缓存窗口,可以避免重绘时产生抖动的感觉。我一般选择 GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH 作为参数来设置初始的显示模式。...如果把这些都放到初始化时候完成,使用一种结构记录该次绘制所需要的所有 VBO 所需信息,把它保存到 VBO特定位置,绘制的时候直接在这个位置取信息绘制,会简化渲染流程、提升渲染速度。
一、安装GLUT 工具包 GLUT 不是OpenGL 所必须的,但它会给我们的学习带来一定的方便,推荐安装。...也可直接去官方网站下载:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip Windows 环境下安装GLUT 的步骤:...三、一个简单的二维网格棋盘绘制示例 // opengltest1.cpp : Defines the entry point for the console application. // #include...glRectf(j*d , d *i, (j + 1)*d , d *(i + 1)); } } } } //按上述命令绘制图形...至此,VC6下的OpenGL环境搭建完成! 祝各位Coding 愉快~
下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。 (1)数学上的直线没有宽度,但OpenGL的直线则是有宽度的。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: Ÿ 重新建立用作新渲染画布的矩形区域; Ÿ 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。
(4) 了解和使用OpenGL的生成直线的命令,来验证程序运行结果。 3.实验原理: 示范代码原理参见教材直线光栅化一节中的DDA算法。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。
GL、GLUT、FreeGLUT和GLAD GL(Graphics Library):GL是OpenGL的前身,是图形编程中的基础库之一。它提供了一系列基本的图形函数,如绘制点、线、三角形等。...在早期的OpenGL版本中,开发者通常会直接使用GL库来进行基本的图形绘制,例如通过调用glBegin()和glEnd()来指定绘制的几何形状,并使用glVertex()来指定顶点坐标。...尽管现代OpenGL已经淘汰了这些固定管线的绘制方式,转而采用可编程着色器的方式,但GL仍然作为OpenGL的一部分存在,并且在一些特定的场景下仍然会被使用到。...通过使用GLUT,开发者可以快速地搭建起一个基本的OpenGL应用程序框架,而无需关注底层的窗口管理和事件处理细节。...而在早期的OpenGL开发中,开发者可能会使用GLUT或者FreeGLUT来创建窗口和处理输入。
输入与窗口函数不属于OpenGL核心库,但是由于它们在交互式程序中的重要地位,这类函数已被包含在GLUT库中。这些函数使我们能够对屏幕中的窗口进行控制并使用鼠标和键盘。...应用程序既可以使用OpenGL、GLU以及GLX库中的函数,也可以直接使用X库或X工具集中的函数。 另外还有一种折衷的方法是借助GLUT库,这样可以使同一个程序能够在不同的平台下重新编译和运行。...三、GLUT void glutInit(int * argc, char ** argv); //初始化GLUT,应在其他GLUT函数和OpenGL函数之前进行调用。...//glutInit()接收来自main函数的参数,程序可以具体实现相关的方式来使用这些参数 所有的GLUT函数都是以glut为前缀。...GL_COLOR_BUFFER_BIT指颜色缓存 void glFlush() //强制执行之前缓存的所有OpenGL命令 六、示例程序 1 #include glut.h> 2 void
1、首先登录https://www.opengl.org/resources/libraries/glut/,下载下图箭头所指的文件 2、解压缩,如下图所示: 3、粗暴一点,把这些文件全部选中,然后复制到...pyopengl,下载合适版本的whl文件,如图所示(根据自己所安装Python的版本选择32位或64位): 5、下载到Python3.6的安装目录的scripts文件夹中(注意,不要修改文件名),然后使用...from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * class MyPyOpenGLTest: #重写构造函数...): glutInit(sys.argv) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)...glBegin(GL_LINES) #设置顶点颜色 glColor3f(0.0, 0.0, 0.0) #绘制多边形顶点 for i in range(1001):
,输出正确结果; (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告; (3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告; (4) 了解和使用...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。
下面介绍下OpenGL画线的一些基础知识和glutReshapeFunc()函数。 (1)数学上的直线没有宽度,但OpenGL的直线则是有宽度的。...前面的实验已经知道如何绘“点”,那么OpenGL是如何知道拿这些顶点来做什么呢?是一个一个的画出来,还是连成线?或者构成一个多边形?或是做其它事情呢?...为了解决这一问题,OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),并由glBegin来指明如何使用这些点。...如果使用的是GLUT,通知将自动完成,并调用向glutReshapeFunc()注册的函数。该函数必须完成下列工作: 重新建立用作新渲染画布的矩形区域; 定义绘制物体时使用的坐标系。...glViewport()调整像素矩形,用于绘制整个窗口。接下来三个函数调整绘图坐标系,使左下角位置为(0, 0),右上角为(w, h)。
立即渲染模式与核心模式 早期的OpenGL使用立即渲染模式(Immediate mode),这个模式下绘制图形很方便。...OpenGL的大多数功能都被库隐藏起来,开发者很少有控制OpenGL如何进行计算的自由。...当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。...OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。...窗口管理 GLUT:glut或者freegult主要是OpenGL 1.0的基本函数功能,前面几节主要用的这个库。 GLFW:glfw的开发目的是用于替代glut的。
FreeGLUT介绍 FreeGLUT(Free OpenGL Utility Toolkit)是一个开源的替代性GLUT库,它提供了类似于GLUT的功能,并在其基础上进行了扩展和改进。...FreeGLUT的目标是提供一个跨平台、功能丰富且易于使用的工具库,用于OpenGL程序开发。...这使得开发者可以使用相同的代码在不同平台上进行OpenGL程序开发。...(); return 0; } 创建五角星示例: #include #include glut.h> using namespace std; struct...(); return 0; } 此外,可以参考该项目:https://github.com/sprintr/opengl-examples,提供了一些glut示例。
领取专属 10元无门槛券
手把手带您无忧上云