07 2013 档案

摘要:之前有一个项目用到,今天看到有人问,突然得这个问题还是很简单,其实项目中使用是比较简单的就是做一个编辑软件,鼠标可以选中直线。当时的做法是:在鼠标点下的位置产生一个小矩形,然后使用射线与矩形相交的方式完成的(项目中有这个代码,就没有去想),现在想来,还有一个更加简单的方式,看下图:当点在直线上的时候,我们得出一个结论 AP的距离 + PB的距离 == AB之间的距离。当然你也可以使用数学的方式,个人觉得这个方式更加能让人理解,现在本人还没有实际的使用这个理论在项目上,还处于理论阶段。不知使用上是否可以适应项目需求。 阅读全文
posted @ 2013-07-28 14:44 zlt 阅读(1838) 评论(8) 推荐(2)
摘要:之前介绍了vertex shader的基本原理,现在我们来做一个简单的实践,在游戏中广告版(布告版)随处可见,而且效率很高,现在我们就使用shader来实现这一过程,首先我们要知道布告版的原理实际上就是一直对着摄像机,与摄像机的方向上是垂直的。如下图所示:不管摄像机如何去动,那么广告版也跟随一起动(即旋转),那么在摄像机动的时候,就要重新计算布告版的位置,为了做到这一点,我么要对摄像机的原理有所了解,看摄像机的几个重要的参数,观看的方向:dir向上的方向:up向右的方向:right及组成如下的坐标系(就是摄像机的局部坐标系了)黑色的表示的是世界坐标系,蓝色的是摄像机的坐标系。为了让布告版与摄像 阅读全文
posted @ 2013-07-28 08:47 zlt 阅读(1783) 评论(1) 推荐(2)
摘要:上一个例程中,使用了uniform 类型的变量,uniform可以理解为全局变量,这一节中使用的是attribute类型的变量,翻译过来就是属性,他是与顶点绑定的,就意味着一个顶点可以有很多个属性(当然也可以没有),提出这个概念的原因是啥呢?我们先看下最早期的OpenGL早己的OpenGL定义的数据比较少,有顶点,法线,颜色,纹理(1.0版本),也就是说一个顶点可以传递给显卡的数据是有限的,没有办法在像显卡传递更多的数据参与计算,例如,现在游戏中比较流线的法线贴图(或者叫凹凸纹理)是做不到,为了满足这样的应用场合,提出了顶点属性这样一个概念,目的就是,传递更多的数据给显卡,参与计算,显示更好的 阅读全文
posted @ 2013-07-25 23:13 zlt 阅读(1672) 评论(0) 推荐(2)
摘要:上一篇中介绍了如何使用shader,用来一个最简单的shader,计算顶点的位置,调用了OpenGL 顶点着色语言中的内置变量对顶点进行操作,这一例程中,将展示如何将应用层的数据传递到shader中,在shader中完成相应的计算。 先说下在这一节中,我们要完成的任务,不调用OpenGL的旋转函数(即glRotate××)系列函数,不使用矩阵完成对模型的旋转。要完成这样的功能,那么我们就只能借住shader来进行计算,编写shader更多的情况要求我们对数学知识了解到更多,掌握的更多,写shader就是写一些列的算法,这些算法多数数与数学相关的。今天我们要掌握的知识是:un 阅读全文
posted @ 2013-07-24 21:21 zlt 阅读(3182) 评论(1) 推荐(3)
摘要:OpenGL着色语言(GLSL――OpenGL Shading Language)是用来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分。比如:视图转换、投影转换等。GLSL(GL Shading Language)的着色器代码分成2个部分:Vertex Shader(顶点着色器)和Fragment(片断着色器),有时还会有Geometry Shader(几何着色器)。负责运行顶点着色的是顶点着色器。它可以得到当前OpenGL 中的状态,GLSL内... 阅读全文
posted @ 2013-07-23 21:56 zlt 阅读(3524) 评论(2) 推荐(2)
摘要:最新版本,之前的版本有些文件没有打包视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440OpenGL本身并没有绘制文字的功能,他只是一个三维绘图的API集和,很多东西都要自己动手才可以实现。OpenGL绘制文字,网络上... 阅读全文
posted @ 2013-07-22 23:16 zlt 阅读(15958) 评论(8) 推荐(5)
摘要:视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440接上一个例程OpenGL10-骨骼动画原理篇(2),对骨骼动画的基本原理做了介绍,接下来要对之前做的工作做一个分析和优化,骨骼动画要做大量的数学计算,当一个模型的顶点... 阅读全文
posted @ 2013-07-20 22:29 zlt 阅读(3990) 评论(2) 推荐(2)
摘要:接上一篇的内容,上一篇,简单的介绍了,骨骼动画的原理,给出来一个简单的例程,这一例程将给展示一个最初级的人物动画,具备多细节内容以人走路为例子,当人走路的从一个站立开始,到迈出一步,这个过程是一个连续的过程,在这个一个过程中,人身体的骨头在位置在发生变化,骨头发生变化以后,人的皮肤,肌肉就随着变化,上一个例程中我们计算(OpenGL10-骨骼动画原理篇(1))计算了根据骨头的位置计算皮肤的位置只是计算量一刻的动作,走路的过程是连续的,就意味着我们要记录下来骨头在运动过程中所以位置变化数据,这样才可以根据不同时刻的骨骼的位置计算出来皮肤的位置。现在问题出来了,如果美术做了一个动画有5秒钟,每一秒 阅读全文
posted @ 2013-07-20 08:50 zlt 阅读(4861) 评论(7) 推荐(2)
摘要:视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440/*** OpenGL8-直接分配显存-极速绘制(Opengl1.5版本才有)例子中展示了如何直接 分配显存,使用了glBindBuffer(GL_ARRA... 阅读全文
posted @ 2013-07-18 19:19 zlt 阅读(1564) 评论(1) 推荐(1)
摘要:视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440本例程展示如何建立骨骼动画,有些人叫蒙皮动画定义如下:当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画中,每帧动画其实就是模型特定姿态的一个“快照”。通过在帧之... 阅读全文
posted @ 2013-07-17 23:03 zlt 阅读(22089) 评论(2) 推荐(2)
摘要:/*** 这个例子展示如何使用FreeImage加载图片作为纹理* 初学者,在学习OpenGL的时候,往往因为OpenGL读图片没有那么方便* 而浪费了大量的时间在研究图片格式上,其实大可不必。 1. 获取图片格式 FREE_IMAGE_FORMAT fifmt = FreeImage_GetFileType("woodfloor.tga", 0); 2. 加载图片 FIBITMAP *dib = FreeImage_Load(fifmt, "woodfloor.tga",0); 3. 转化为rgb 24色 dib = Free... 阅读全文
posted @ 2013-07-17 13:47 zlt 阅读(2247) 评论(0) 推荐(2)
摘要:视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440/*** 这个例子介绍如何使用显卡内存进行绘制下载地址 :http://files.cnblogs.com/zhanglitong/Tutorial8-%E7%9B%... 阅读全文
posted @ 2013-07-17 08:10 zlt 阅读(1912) 评论(2) 推荐(0)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 这个例子介绍如何使用 glEnableClientState, glVertexPointer. glColorPointer, //-------------绘制图元的类型,索引的数量, 索引的数据 阅读全文
posted @ 2013-07-16 08:24 zlt 阅读(644) 评论(0) 推荐(0)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 这个例子介绍如何使用 glEnableClientState, glVertexPointer. glColorPointer, glTexCoordPointer, glDrawArrays 函数进 阅读全文
posted @ 2013-07-15 20:31 zlt 阅读(404) 评论(0) 推荐(0)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 这个例子介绍如何使用 glEnableClientState, glVertexPointer. glColorPointer, glTexCoordPointer, glDrawArrays 函数进 阅读全文
posted @ 2013-07-15 20:18 zlt 阅读(819) 评论(0) 推荐(0)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 这个例子展示如何做纹理动画* glMatriModel();* 主要使用glTranslatef();* glScalef();* glRoatef()函数* 按下 't'建,做移动纹 阅读全文
posted @ 2013-07-14 18:04 zlt 阅读(893) 评论(0) 推荐(1)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 经过上几个例子的了解,这一例子介绍OpenGL坐标系 OpenGL使用右手坐标 坐标是OpenGL中用来描述场景的坐标, Z+轴垂直屏幕向外 ,X+从左到右, Y+轴从下到上, 是右手笛卡尔坐标系统, 阅读全文
posted @ 2013-07-13 21:35 zlt 阅读(736) 评论(0) 推荐(1)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"winmm.lib")/*** 这个例子将绘制一个旋转的立方体* 主要介绍OpenGL矩阵的操作* 主要用到的函数glRotatef(角度,x轴,y轴,z轴); * 改函数将该面model view 矩阵。* glTranslate 阅读全文
posted @ 2013-07-13 21:33 zlt 阅读(3026) 评论(1) 推荐(1)
摘要:代码下载#include "CELLWinApp.hpp"#include #include #include #pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")/*** 该例子展示如何点,线,面等数据,* 主要用到的OpenGL函数及定义如下 GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL. 阅读全文
posted @ 2013-07-13 21:31 zlt 阅读(2559) 评论(0) 推荐(1)
摘要:代码下载/*** 该例子展示如何使用OpenGL绘制三角形* 为什么说绘制三角形呢 ?三维空间里面,我们看到的机会大多数* 漂亮的模型,建筑,任务,机会都是有三角形网络组成。可以说三角形* 是组成三维的基本元素,所以三角形是绘制最基本的图元。* 当然还有,点和线。*//*** 在第一个例子上,封装了一个CELLWinApp类,改类完成了机会所有的工作* 当这样会使得我们的代码过于冗余,耦合度非常高,没有重用性,为了提供* 应用程序的重用性,需要降低耦合度.如何降低呢,在这个例子中,做如下改动* 将 render函数声明称虚函数,这样可以被重写,完成绘制工作*... 阅读全文
posted @ 2013-07-13 21:28 zlt 阅读(892) 评论(2) 推荐(1)
摘要:视频教程请关注http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440代码下载#pragma once#include #include #include namespace CELL{namespace Graphy{clas... 阅读全文
posted @ 2013-07-13 21:26 zlt 阅读(918) 评论(3) 推荐(1)