opengl

 penGl 基本框架    2
1.1 Opengl简介    2
1.2 openGl 的工作方式    3
1.2.1 Opengl 体系结构    3
1.2.2 openGl 流水线    3
1.2.3 OpenGl状态机    4
1.3 OpenGl 操作步骤    4
1.4 OpenGl 组成    4
1.5 OpenGl 数据类型    5
1.6 OpenGl 函数命名约定    5
2. Linux Mesa 安装    6
2.1 下载Mesa软件包    6
2..2 For DRI and hardware acceleration    7
2.3. 整理安装步骤    8
2.3.1 下载mesalib 和gult包    8
2.3.2 安装其他包    9
2.3.3 安装dri2proto 和 libdrm, pixman    9
2.3.4. 编译安装    10
2.4 安装glut    11
3. OpenGL 简介o    11
3.1 什么是OpenGL    11
3.2 OpenGL 一些概念    12
3.3 OpenGL是一个状态机    13
3.4 OpenGl 渲染管线    13
3.4.1 显示列表    14
3.4.2 求值器    14
3.4.3 基于顶点的操作    14
3.4.4 图元装配    14
3.4.5 像素操作    15
3.4.6 纹理装配    15
3.4.7 光栅化    15
3.4.8 片段操作1    16
3.5 动画    16
3.5.1 暂停刷新    16
3.5.2 动画 = 重绘 + 交换    17
3.6 OpenGl 废弃机制    17
4. 状态管理和绘制几何物体    18
4.1 绘图工具箱    18
4.1.1 清除窗口    18
4.1.2 指定颜色    19

1 openGl 基本框架
1.1 Opengl简介





1.2 openGl 的工作方式
1.2.1 Opengl 体系结构


1.2.2 openGl 流水线


1.2.3 OpenGl状态机


1.3 OpenGl 操作步骤


1.4 OpenGl 组成




1.5 OpenGl 数据类型


1.6 OpenGl 函数命名约定


2. Linux Mesa 安装
2.1 下载Mesa软件包
1)进入http://www.mesa3d.org/download.html 下载 MesaLib-8.0.5.tar.gz,
MesaGLUT-7.9.2.tar.gz

    2)把两个解压到同一个文件里,然后在shell里cd 到解压目录
运行ubuntu@ubuntu:/opt/OpenGl/Mesa-8.0.5$ ./configure
出现这个错误:configure: error: makedepend is required to build Mesa
安装xutils-dev
ubuntu@ubuntu:/opt/OpenGl/Mesa-8.0.5$

 sudo apt-get install xutils-dev

    3)./configure
出现错误:error: Package requirements (glproto >= 1.4.14) were not met:
No package 'glproto' found

 (   在网址http://packages.ubuntu.com/source/precise/x11/中,找到x11proto-gl (1.4.14-2),然后点击进去下载x11proto-gl_1.4.14.orig.tar.gz,
安装库:a) ./configure b) make -j4 c) make install )

解决方法:sudo apt-get install x11proto-gl-dev

    4)./configure
error: Package requirements (dri2proto >= 2.6) were not met:
No package 'dri2proto' found

   安装库: sudo apt-get install x11proto-dri2-dev
    
    5)./configure
error: Package requirements (x11 xext xdamage xfixes x11-xcb xcb-glx) were not met:
No package 'xdamage' found
No package 'xfixes' found
No package 'x11-xcb' found
No package 'xcb-glx' found

    安装库:sudo apt-get install libx11-xcb-dev
            sudo apt-get install libxcb-glx0
            sudo apt-get install libxcb-glx0-dev
sudo apt-get install libxdamage-dev

    6)./configure
       configure: error: Expat required for DRI.    
见2.2
2..2 For DRI and hardware acceleration


1下载libdrm-2.4.35.tar.gz

解压后进入libdrm目录
1) 运行./configure
出现:error: Package requirements (pciaccess >= 0.10) were not met:
No package 'pciaccess' found

安装:
sudo apt-get install libpciaccess-dev

2) 运行./configure生成makefile
3)make
4)make install

2下载dri2proto-2.8.tar.gz
解压后进入dri2proto目录
 1)./configure
2) make install

3 安装xorg-x11-serve
1)从下面网址下下载xorg-x11-serve

sudo apt-get install xserver-xorg-dev

(http://ftp.isu.edu.tw/pub/Linux/Ubuntu/ubuntu/pool/main/x/xorg-server/
2)解压后进入解压目录
./configure
configure: error: Package requirements (pixman-1 >= 0.15.20) were not met:

No package 'pixman-1' found
3) 安装pixman
http://packages.ubuntu.com/oneiric/libpixman-1-0 下载pixman
 ./configure
make
sudo make install

4)./configure
configure: error: Package requirements (xf86driproto >= 2.1.0) were not met:
sudo apt-get install x11proto-xf86dri-dev

5) ./configure
checking for SHA1 implementation... configure: error: No suitable SHA1 implementation found

sudo apt-get install openssl )

4. 进入Mesa目录
./configure
configure: error: Expat required for DRI

sudo apt-get install libexpat-dev

5. ./configure

configure: error: LLVM is required to build Gallium R300 on x86 and x86_64

sudo apt-get install llvm

2.3. 整理安装步骤
2.3.1 下载mesalib 和gult包
进入http://www.mesa3d.org/download.html 下载 MesaLib-8.0.5.tar.gz,
MesaGLUT-7.9.2.tar.gz

    2)把两个解压到同一个文件里

2.3.2 安装其他包
sudo apt-get install xutils-dev
sudo apt-get install x11proto-gl-dev
sudo apt-get install x11proto-dri2-dev
sudo apt-get install libx11-xcb-dev
sudo apt-get install libxcb-glx0
sudo apt-get install libxcb-glx0-dev
sudo apt-get install libxdamage-dev
sudo apt-get install libpciaccess-dev
sudo apt-get install xserver-xorg-dev
sudo apt-get install x11proto-xf86dri-dev
sudo apt-get install libexpat-dev
sudo apt-get install llvm
2.3.3 安装dri2proto 和 libdrm, pixman
http://www.mesa3d.org/install.html
下载


1下载libdrm-2.4.35.tar.gz

解压后进入libdrm目录
1) 运行./configure
2) 运行./configure生成makefile
3)make
4)make install

2下载dri2proto-2.8.tar.gz
解压后进入dri2proto目录
 1)./configure
2) make install

3. 安装pixman
http://packages.ubuntu.com/oneiric/libpixman-1-0 下载pixman
 ./configure
make
sudo make install

2.3.4. 编译安装
进入解压的Mesa-8.0.5
1)运行 ./configure
prefix:          /usr/local
exec_prefix:     ${prefix}
 libdir:          ${exec_prefix}/lib
 includedir:      ${prefix}/include

2)编译Mesa
 make linux-x86

3) 安装
Make install

4) 卸载
sudo apt-get autoremove xutils-dev
sudo apt-get autoremove x11proto-gl-dev
sudo apt-get autoremove x11proto-dri2-dev
sudo apt-get autoremove libx11-xcb-dev
sudo apt-get autoremove libxcb-glx0
sudo apt-get autoremove libxcb-glx0-dev
sudo apt-get autoremove libxdamage-dev
sudo apt-get autoremove libpciaccess-dev
sudo apt-get autoremove xserver-xorg-dev
sudo apt-get autoremove x11proto-xf86dri-dev
sudo apt-get autoremove libexpat-dev
sudo apt-get autoremove llvm

#delete include and lib
cd /usr/local
#libdrm
sudo rm -r include/libdrm
sudo rm lib/libdrm*

#dri2proto
sudo rm -r include/libkms
sudo rm lib/libkm*

#pixman-1
sudo rm -r include/pixman-1
sudo rm lib/libpixman*

#mesa
sudo rm -r include/EGL
sudo rm -r include/GL
sudo rm -r include/KHR
sudo rm -r include/VG
sudo rm -r include/X11

sudo rm lib/libEGL*
sudo rm lib/libGL*
sudo rm lib/libOpenVG*
sudo rm lib/libOSMesa*

2.4 安装glut
sudo apt-get install freeglut3
库路径:/usr/lib/i386-linux-gnu
3. OpenGL 简介
3.1 什么是OpenGL




3.2 OpenGL 一些概念
渲染:是计算机根据模型创建图像的过程。最终完成了渲染的图像是由屏幕上绘制的像素组成的。

模型:根据几何图元创建的,也称为物体(object).几何图元包括点、直线和多边形等,它们是通过顶点(vertex)指定的。

像素:显示硬件可以在屏幕的最小可视元素。(在内存中,和像素有关的信息(ep:像素的颜色))组成位平面的形式。

位平面:是一块内存区域,保存了屏幕上每个像素的1个位的信息。(ep:它指定了一个特定像素的颜色中红色成分的强度)。
位平面又可以组织成帧缓冲区(framebuffer)的形式,后者保存了图像硬件为了控制屏幕上所有像素的颜色和强度所需要的全部信息。

3.3 OpenGL是一个状态机


3.4 OpenGl 渲染管线



3.4.1 显示列表


3.4.2 求值器


3.4.3 基于顶点的操作


3.4.4 图元装配



3.4.5 像素操作


3.4.6 纹理装配


3.4.7 光栅化


3.4.8 片段操作


3.5 动画




3.5.1 暂停刷新
如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了。




3.5.2 动画 = 重绘 + 交换


3.6 OpenGl 废弃机制

4. 状态管理和绘制几何物体


4.1 绘图工具箱


4.1.1 清除窗口





在发送命令清除多个缓冲区之前,如果想使用并不是默认的RGBA值,深度值、累积值和模板索引值,就必须为每个缓冲区设置需要清除的值。

    glClearColor() 设置颜色缓冲区的值
    
    glClearDepth()设置深度缓冲区的值

    glClearIndex()设置清除相应缓冲区的颜色索引值

    glClearAccum() 设置累计累计缓冲区的颜色值

    glClearStencil()清除模板缓冲区的颜色值


4.1.2 指定颜色
OpenGL 程序员首先设置颜色或颜色方案,
然后再绘制物体。
在这种颜色方案被修改之前,所有的物体都用这种颜色方案进行绘制。

为了设置颜色,可以使用glColor3f()函数。这个函数接受3个参数,它们都是0.0~1.0之间的浮点数,分别表示颜色的红、绿和蓝色成分。



4.1.3 强制绘图完成







4.2 顶点数组
红宝书阅读笔记——缓冲区对象
前面的顶点数组使得几何图元的显示方便了很多,但是如果每次都要向OPENGL发送一大块数据,而这数据其实并没有修改过,那么这传输就是冗余的。所以这里添加了缓冲区对象,将顶点数组存储在服务器端的缓冲区对象中。

1. 创建缓冲区对象
glGenBuffers(GLsizei n,GLuint *buffers) 任何非零的无符合整数都可以作为缓冲区对象的标识符使用。这个函数的作用就是向系统申请n个缓冲区,系统把这n个缓冲区的标识符都放进buffers数组中。还可以调用glIsBuffer()函数判断一个标识符是否正被使用。

2. 激活缓冲区对象
为了激活缓冲区对象,首先需要将它绑定。glBindBuffer(GLenum target, GLuint buffer)。target用于决定绑定的是顶点数据还是索引,关于这个函数的解释,书上第二章讲的很详细了。

3. 用数据分配和初始化缓冲区对象
glBufferData()用于在OPENGL服务器中分配内存建立缓冲区,并将客户机的内存复制到这个缓冲区对象。

4. 更新缓冲区对象的数值
当程序中的顶点坐标、颜色等数据发生了修改之后,需要修改对应的缓冲区数值。这里有两种方法可以完成此功能。

glBufferSubData():直接用提供的数据替换绑定的缓冲区的数据子集。

第二种方法更灵活些:
首先用glMapBuffer()返回一个缓冲区指针,然后通过指针和下标对缓冲区对象做修改,
最后调用glUnmapBuffer()取消对缓冲区的映射。

5. 清除缓冲区对象
glDeleteBuffers(GLsizei n,GLuint *buffers),完成了对缓冲区对象的操作之后,可以释放它的资源。
 
当使用缓冲区对象存储顶点数组数据时,应在应用程序中增加几个步骤:

1)生成缓冲区对象标识符(可选)。
2)绑定缓冲区对象,确定它是用于存储顶点数据还是索引。
3)请求数据的存储空间,并对这些数据元素进行初始化,
下一个步骤可选。
指定相对于缓冲区起始位置的偏移量,对诸如glVertexPointer()这样的顶点数组进行初始化。
4)绑定适当的缓冲区对象,以用于渲染。
5)使用适当的顶点数组渲染函数进行渲染,如glDrawArrays()或glDrawElements()等。
流程图如下:

over~

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VMware OpenGL是一种在VMware虚拟机环境中实现OpenGL功能的技术。OpenGL是一种跨平台的图形库,用于开发2D和3D图形应用程序。在虚拟机环境中,由于虚拟机的软件和硬件限制,通常无法直接访问计算机的物理GPU。而通过VMware提供的OpenGL功能,虚拟机可以利用主机计算机的图形处理能力。 VMware OpenGL的实现基于VMware的虚拟图形技术,它允许虚拟机通过直接访问主机的物理GPU驱动程序来获取OpenGL支持。这样一来,虚拟机就可以运行OpenGL应用程序,并在主机显示器上显示出相应的图像和动画效果。同时,虚拟机中的OpenGL应用程序也可以利用主机计算机的GPU进行硬件加速,提升图形渲染的性能。 虚拟机中的OpenGL应用程序可以获得与物理机上运行的应用程序相似的图形性能和质量。这使得开发人员可以在虚拟机环境中进行OpenGL应用程序的开发和测试,而不需要在物理机上进行部署。同时,企业用户也可以在虚拟机中运行需要OpenGL支持的应用程序,而不必担心硬件兼容性和配置要求。 总而言之,VMware OpenGL是一项使得虚拟机能够支持OpenGL功能的技术。它在虚拟机环境中实现了对OpenGL的访问和利用,使得虚拟机可以运行OpenGL应用程序,并借助主机计算机的GPU进行图形渲染和硬件加速。这为开发人员和企业用户提供了更灵活、高效的虚拟化环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值