OpenGLES
文章平均质量分 96
bsplover
热爱音视频编解码、网络编程
展开
-
从零开始学习OpenGL ES之一 – 基本概念
我曾写过一些文章介绍iPhone OpenGL ES编程,但大部分针对的是已经至少懂得一些3D编程知识的人。作为起点,请下载我的OpenGL Xcode项目模板,而不要使用Apple提供的模板。你可以解压到下面位置安装此模板:/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Ap转载 2012-12-10 14:09:11 · 1642 阅读 · 1 评论 -
【GLSL教程】(四)shder的简单示例
GLSL的Hello World这一节中包含一个最基本的shader,它提供如下功能:顶点变换然后使用单一的颜色渲染图元。顶点shader前面已经说过,顶点shader负责完成顶点变换。这里将按照固定功能的方程完成顶点变换。固定功能流水线中一个顶点通过模型视图矩阵以及投影矩阵进行变换,使用如下公式:[cpp] view plain cop转载 2016-09-13 11:06:50 · 751 阅读 · 0 评论 -
【GLSL教程】(三)在OpenGL中向shader传递信息
引言一个OpenGL程序可以用多种方式和shader通信。注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存。OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了。例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样。不过,使用Ope转载 2016-09-13 10:40:00 · 1092 阅读 · 0 评论 -
【GLSL教程】(二)在OpenGL中使用GLSL
设置GLSL这一节讲述在OpenGL中配置GLSL,假设你已经写好了顶点shader和像素shader。如果你还没有准备好,可以从如下网址获得相关内容:http://www.3dshaders.com/home/http://www.opengl.org/sdk/tools/ShaderDesigner/http://developer.amd.com/archiv转载 2016-09-13 10:34:05 · 1299 阅读 · 0 评论 -
【GLSL教程】(一)图形流水线
这是一些列来自lighthouse3d的GLSL教程,非常适合入门。我将边学习边翻译该教程的内容,同时记录在这里,方便以后查询。流水线概述下图描述了一个简化的图形处理流水线,虽然简略但仍然可以展示着色器编程(shader programming)的一些重要概念。一个固定流水线包括如下功能:顶点变换(Vertex Transformation)转载 2016-09-13 10:33:02 · 803 阅读 · 0 评论 -
详解OpenGL中的各种变换(投影变换,模型变换,视图变换)
本文一些用于均参考《OpenGL编程指南(第8版)》,有兴趣的同学可以结合一起看。这篇算是整合补充。 OpenGL采用的是相机模型,就是把视图变换操作类比为使用照相机拍摄照片的过程,具体步骤如下(这里和红宝书有一些改变):将准备拍摄的对象移动到场景中指定位置。(模型变换,Model Transform)将相机移动到准备拍摄的位置,将它对准某个方向。(视图变换,View Trans转载 2016-02-29 21:14:47 · 2287 阅读 · 0 评论 -
OpenGL ES 从零开始系列9(完结):四元数
在进入下一篇关于骨骼动画的文章之前,让我们先花点时间来了解一个马上会使用到的新数据类型:四元数[译者注:关于四元数的概念可以参考这个链接:点我]。我们用四元数存储单一骨骼在3个轴线上的旋转信息,换句话说,存储的是骨骼指向的方向。在下一部分介绍的仿真骨骼动画中,你将会看到,模型的顶点是同一个或多个骨骼相关联的,当骨骼移动时它们也会随之变化。相对于将欧拉角信息存储在3个GLfloats变量或一个转载 2012-12-10 14:17:04 · 5230 阅读 · 1 评论 -
OpenGL ES 从零开始系列08:交叉存取顶点数据
Technote 2230提出了很多用OpenGL ES来提升iphone程序性能的建议。我们现在远远不能深刻理解OpenGL ES所以你需要学习以下内容。不信?是真的,试试看,我等着你的读后感。好,就这样定了?副标题为“优化顶点数据”,这里有一些算法上的建议用来”submit strip-ordered indexed triangles with per vertex data int转载 2012-12-10 14:15:48 · 1091 阅读 · 0 评论 -
从零开始学习OpenGL ES之五 – 材质
在 上一篇文章,我们讨论了光效的设定以及光效的各种属性。我们还讨论了光的三要素:散射光, 环境光 和高光。如果你还不是完全清楚,那么我们来复习一下,在定义材质时大量的用到这些要素。 作为本文的起点,我们使用了原文中球体绘制 的项目文件。我们不再使用二十面体而是转向球体是因为球体是展示光和材质不同要素之间相互作用的最佳形状。 颜色转载 2012-12-10 14:13:15 · 1352 阅读 · 0 评论 -
从零开始学习OpenGL ES之四补遗 – setupView重写
我在从零开始学习OpenGL ES之四 – 光效 一文中使用了一个普通GLfloat数组。由于它没有使用任何非OpenGL定义的数据结构,所以是最为普通和方便的方式。 但在此我使用在第一部分中定义的Vertex3D, Vector3D和 Color3D数据结构重写了 setupView:方法。并不是这种方法“更好”,但是它是一种不同的方式。当我第一次学习OpenGL时,我发现使用顶转载 2012-12-10 14:12:18 · 1323 阅读 · 0 评论 -
从零开始学习OpenGL ES之四 – 光效
继续我们的iPhone OpenGL ES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可以看见东西。 它只是提供一种十分单调的整体光让我们看到物体。但是如果不定义光效,物体看上去都很单调,就像你在第二部分程序中看到的那样。 阴影模型(Shade Model) 在深入讨论Open转载 2012-12-10 14:11:45 · 1409 阅读 · 0 评论 -
从零开始学习OpenGL ES之二 – 简单绘图概述
还有许多理论知识需要讨论,但与其花许多时间在复杂的数学公式或难以理解的概念上,还不如让我们开始熟悉OpenGL ES的基本绘图功能。请下载OpenGL Xcode项目模板。我们使用此模板而不是Apple提供的模板。你可以解压到下面目录来安装它:/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Tem转载 2012-12-10 14:10:14 · 1904 阅读 · 0 评论 -
OpenGL ES 从零开始系列9a:动画基础和关键帧动画
最初这篇教程我并不打算作为第9章发布,原计划是第10章。在深入了解Opengl ES 2.0 和着色器之前,我想讨论下更基础的:动画。注意:你可以在这里找到这篇教程的配套代码,新版本的代码已经在西部时间10:14更新了,更新的代码里面修正了一个不能动画的错误。目前为止,想必你已经看过了opengles最基本的动画形式。通过随时间改变rotate, translate,转载 2012-12-10 14:16:32 · 2804 阅读 · 1 评论 -
从零开始学习OpenGL ES之七 – 变换和矩阵
今天的主题是我一度谈之色变的。概念上讲,它是3D编程中最为困难的部分。 首先,你应该理解 3D 几何和笛卡尔坐标系他。你还应该理解由顶点构成的三角形组成的OpenGL虚拟世界的物体,各顶点定义了三维空间的特定点,你还应理解怎样使用这些信息在 iPhone上使用OpenGL ES进行绘制。如果你不理解这些概念,我建议你回头再看看我的前六篇文章。 为在交互式程序如游戏中转载 2012-12-10 14:14:45 · 4777 阅读 · 0 评论 -
从零开始学习OpenGL ES之六 – 纹理及纹理映射
在OpenGL ES中另一种为多边形定义颜色创建材质的方法是将纹理映射到多边形。这是一种很实用的方法,它可以产生很漂亮的外观并节省大量的处理器时间。比如说,你想在游戏中造一个砖墙。你当然可以创建一个具有几千个顶点的复杂物体来定义每块砖以及砖之间的泥灰。 或者你可以创建一个由两个三角形构成的方块(四个顶点),然后将砖的照片映射上去。简单的几何体通过纹理映射的方法比使用材质的复杂几何体转载 2012-12-10 14:14:02 · 5761 阅读 · 1 评论 -
从零开始学习OpenGL ES之三 – 透视
现在你已经知道OpenGL是怎样绘图的了,让我们回头谈谈一个很重要的概念:OpenGL视口(viewport)。 许多人对3D编程还很陌生,那些使用过像Maya, Blender, 或 Lightwave之类3D图形程序的人都试图在OpenGL虚拟世界中找到“摄像机”。但OpenGL并不存在这样的东西。它所有的是在3D空间中定义可见的物体。虚拟世界是没有边界的,但计算机不可能处理无限的空间,所以O转载 2012-12-10 14:10:59 · 2266 阅读 · 0 评论 -
【GLSL教程】(五)卡通着色
引言卡通着色可能是最简单的非真实模式shader。它使用很少的颜色,通常是几种色调(tone),因此不同色调之间是突变的效果。下图显示的就是我们试图达到的效果:茶壶上的色调是通过角度的余弦值选择的,这个角度是指光线和面的法线之间的夹角角度。如果法线和光的夹角比较小,我们使用较亮的色调,随着夹角变大,逐步使用更暗的色调。换句话说,角度余弦值将决定色调的强度。在本教程中,我们先介绍逐顶转载 2016-09-13 11:24:24 · 864 阅读 · 0 评论