本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API).OpenGL API有不同编程语言的实现版本.但是,它们最终使用的都是最底层的C语言的接口. 在C语言的API中,定义了很多typedefs,#define,以及函数.typedefs用于定义openGL里面使用到的基本的数据类型,如GLint,GLfloat等. 复杂的数据结构,如struct,…
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包括你现在阅读的文字是简单的二维像素点的集合.如果你在屏幕上截图,并放很大,就会看到一个个的方格. Figure8. An Image 没一个格子就是一个像素.pixel单词,是从Picture Element中提取出来的.你屏幕上的没一个像素都有一个独立的颜色.二维的像素数组就组成了 图像 因此,任…
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何知识,但对于向量的理解并不是必要的.因为,在接下去的内容中,会对向量的基本概念作出介绍. 在面对几何或是数值相关的内容时,向量可以有很多不同的解释.在任何一种情况,向量是具有维度的.二维的向量限制在一个平面上,然而三维的向量可以在任何的物理空间.向量还可以有更高的维度,但是通常情况下,我们处理的向量…
本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和windows下OpenGL环境的配置.需要配置的是除了OpenGL基础环境外,还需要freeglut和glew.具体的配置见下面的内容. linux 由于译者使用的linux版本为mint 18 sarah,此处就以mint系统为例进行linux下的环境配置. sudo apt-get install…
本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬件,也成为了它们的必备特征. 对于大多数刚刚接触图像以及渲染的人,想要深入理解图像硬件是一件有挑战的事情. 为什么阅读这本书 现在已经有很多教授图形学相关的实体书.网络上关于图形学的介绍将更多,常见的形式有,wikis,博客,入门类型的,以及论坛.那么这本书提供了哪些其他书籍所没有提供的内容呢? 从…
本书系列 现代3D图形变成学习 http://www.cnblogs.com/grass-and-moon/category/920962.html 设置颜色 这一章会对上一章中绘制的三角形进行颜色的设定.而不是单纯的设置一个单一的颜色,这里我们会使用两种方式来对这个三角形设置颜色的变化.这些方法有使用片段位点来计算颜色,和前一个顶点数据来计算颜色. 片段位置显示 正如我们在引言中提到的,片段的数据中的一部分包括片段在屏幕上的位置.因此,如果我们想要在三角形表面上设定变化的颜色,我们可以访问当前…
现代3D图形编程学习系列翻译地址 http://www.cnblogs.com/grass-and-moon/category/920962.html opengl使用不同的缓存对象 在设置颜色一章中,我们使用了一个缓存对象来存储点和颜色的信息.那么我们有没有可能,将点和颜色的信息分开存储呢?这在实际应用中也许可以使得各个属性之间保持相互的独立.本章补充内容需要做的事情就是这个. 相对于上一章需要改变的内容有 顶点属性和颜色分别独立存储: const float vertex[] = { 0.0…
关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬件,也成为了它们的必备特征. 对于大多数刚刚接触图像以及渲染的人,想要深入理解图像硬件是一件有挑战的事情. 为什么阅读这本书 现在已经有很多教授图形学相关的实体书.网络上关于图形学的介绍将更多,常见的形式有,wikis,博客,入门类型的,以及论坛.那么这本书提供了哪些其他书籍所没有提供的内容呢? 从编程性上讲,所有先前提到的资源都…
你好,三角形 传统的入门教程在介绍编程语言的时候,通常从"Hello,World!"的程序开始.这样的程序拥有最简单的能够直接输出"Hello, World!"的代码.这是一种熟悉编译系统以及代码执行的很好的一种方式. 使用opengl来写实际的文本的具有一定难度的.在第一章中,我们采用将三角形绘制到屏幕上还取代文本的输出. 本章例子中的代码 #include <iostream> #include <string> #include <…
一.非真实的世界 与之前几篇文章不同的是,这里要画12个三角形,这个12个三角形构造一个方形棱柱(这里为长方体).棱柱的每个四边形表面由两个三角形组成.这两个三角形其中的一条边重合,而且它们的六个顶点的颜色相同,因此每个四边形表面都有唯一的颜色.下面的顶点着色器我们已经非常熟悉,它传递颜色到片段着色器,定义了一个uniform的二维向量offset,该变量用来改变顶点位置的x和y坐标值. ? 1 2 3 4 5 6 7 8 9 10 11 12 const std::string strVert…