• [其他] 浅谈Python图像处理OpenGL
    Python图像处理OpenGLOpenGL(Open Graphics Library,译为“开放式图形库”) 是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形元件到复杂的三维景象。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL可用于设置所需的对象、图像和操作,以便开发交互式的3维计算机图形应用程序。OpenGL被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,或者完全通过软件的方式实现OpenGL的接口。OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些对创建一个统一的、普遍可用的API特别感兴趣的公司组成。到了今天已经发布了非常多的OpenGL版本,以及大量构建于OpenGL之上以简化应用程序开发过程的软件库。这些软件库大量用于视频游戏、科学可视化和医学软件的开发,或者只是用来显示图像。一个用来渲染图像的OpenGL程序需要执行的主要操作如下:    从OpenGL的几何图元中设置数据,用于构建形状    使用不同的着色器(shader)对输入的图元数据执行计算操作,判断它们的位置、颜色,以及其他渲染属性    将输入图元的数学描述转换为与屏幕位置对应的像素片元(fragment),这一步也称作光栅化(rasterization)    最后,针对光栅化过程产生的每个片元,执行片元着色器(fragment shader),从而决定这个片元的最终颜色和位置    如果有必要,还需要对每个片元执行一些额外的操作,例如判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合OpenGL语法OpenGL程序的基本结构通常包括——初始化物体渲染所对应的状态、设置需要渲染的物体。渲染(render)表示计算机从模型创建最终图像的过程,OpenGL只是其中一种渲染系统。模型(model)或者场景对象是通过几何图元,比如点、线和三角形来构建的,而图元与模型的顶点(vertex)也存在着各种对应的关系。OpenGL另一个最本质的概念叫着色器,它是图形硬件设备所执行的一类特色函数。可以将着色器理解为专为图形处理单元(GPU)编译的一种小型程序。在OpenGL中,会用到始终不同的着色阶段(shader stage),最常用的包括顶点着色器(vertex shader)以及片元着色器,前者用于处理顶点数据,后者用于处理光栅化后的片元数据。所有的OpenGL程序都需要用到这两类着色器。最终生成的图像包含了屏幕上绘制的所有像素点。像素(pixel)是显示器上最小的可见单元。计算机系统将所有的像素保存到帧缓存(framebuffer)当中,后者是由图形硬件设备管理的一块独立内存区域,可以直接映射到最终的显示设备上。
  • [HPC] VTK编译问题(以7.1.0版本举例)
    VTK编译过程出现了报错类似于:CMake Error at :/vtk7.1/VTKsrc/CMake/ExternalData.cmake:1005(message):出现报错是因为CMake的VTK_DATA_ROOT设置不对,导致编译时要下载VTKData数据,不排除因为网速或网络权限原因下载不了VTKData数据。解决方法:1、下载VTKData数据,然后解压文件里MD5文件到目录下/ExternalData/Objects/MD5覆盖(VTKData数据可以在VTK官网找到对应的版本下载)2、若不需要用到Data数据,可以在CMake编译的时候把BUILD_TESTING设置为OFFVTK编译完后生成了libvtkRenderingOpenGL2-7.1.so.1,而非libvtkRenderingOpenGL-7.1.so,因为vtk默认编译时启用的是OpenGL2,并且官方表示在8.1.0版本之后将不建议用OpenGL,而使用OpenGL2,但此前部分应用需要用OpenGL解决方法:在cmake编译时候加上参数-DVTK_RENDERING_BACKEND=OpenGL -DModule_vtkRenderingOpenGL=ON -DModule_vtkRenderingOpenGL2=OFFVTK编译完后未生成libvtkRenderingLIC-7.1.so.1解决方法:在cmake编译的时候加上参数-DModule_vtkRenderingOpenGL=ON
  • [问题求助] 【鲲鹏920 robox】【android 容器 opengles 2.0】编译的镜像是否支持opengl es 3.0
    环境:运行的服务端内核和编译android镜像都没有打exagear补丁在android容器中执行opengl es3.0编写的应用程序会失败,但是opengl es2.0的就可以正常运行。检测到android系统目前是opengl es 2.0的版本。请问robox是否可以支持opengl es 3.0?还有exagear补丁有适配完成吗?