三维图像

三维图形渲染管线

三维图形渲染管线就是将三维场景转化为一幅二维图像的过程。

图像中物体所处位置及外形由其几何数据和摄像机的位置共同决定,物体外表是受到其材质属性、光源、纹理及着色模型所影响。

三维图形渲染管线

管线过程由3个大的阶段组成:
三维图形渲染管线

Application(应用程序阶段):运行在CPU上,能被开发者完全控制,该过程所做操作包括:

① 准备场景数据
a. 加载模型:Mesh、Material、Shader、Texture(硬盘 --> 内存 --> 显存)
b. 摄像机(位置、朝向、视锥体)

光栅化三维场景的基本流程

数学上的规定:

由于习惯的不同,每个人对同一个事物的标准也不同。

应事先规定好整个项目的一些“习惯”,并坚决贯彻它们,上下统一。

世界坐标系:

场景中所有物体处于世界坐标系下,且所有的坐标系均为左手坐标系,左手坐标系三个轴的指向如图:

光栅化三维场景的基本流程

以屏幕为基准,该坐标系X轴指向右,Y轴指向上,Z轴指向屏幕里面。

以此坐标系我们可以创建一个世界空间。当然并没有真正创建出来,只是一个约定,便于日后的使用。就像地球的经纬度一样,有了这个我们就能描述什么东西在什么地方了。

物体坐标系:

而世界中有很多物体,比如游戏中的模型,玩家等等。

该世界里的每个物体都含有三个数据:

1)该物体中心处于世界的位置(x,y,z)

首先申明下,本文为笔者学习《OpenGL ES应用开发实践指南(Android卷)》的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载。

《Android学习笔记——OpenGL ES的基本用法、绘制流程与着色器编译》中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项。本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实。首先,物体有各种颜色的变化,在OpenGL ES中为了生成比较真实的图像,对图像进行平滑着色是一种常见的操作。其次,移动设备存在横竖屏的切换,进行图像显示时,需要根据屏幕方向考虑屏幕的宽高比,使图像不因屏幕切换而变形。最后,现实中的物体都是三维的,我们观察物体都带有一定的视角,因此需要在OpenGL ES实现三维图像的显示。本文主要包括以下内容:

平滑着色 自适应宽高 三维图像生成

一、平滑着色

平滑着色是通过在三角形的每个点上定义不同的颜色,在三角形的表面混合这些颜色得到的。那么,如何用三角形构成实际物体的表面呢?如何混合定义在顶点出的不同颜色呢?

同步内容
--电子创新网--
粤ICP备12070055号