解读OpenGL棋盘纹理贴图

原创 2016年05月30日 22:28:20
  1. for (int i = 0; i < 64; i++)  
  2.     {  
  3.         for (int j = 0; j < 64; j++)  
  4.         {  
  5.             GLubyte c = (((i & 0x8) == 0) ^ ((j & 0x8) == 0) )*255;  
  6.             imageRBG[i][j][0] = imageRBG[i][j][1] = imageRBG[i][j][2] = c;  
  7.         }  
  8.     }  

GLubyte就是unsigned char  ,一个字节=八位

就是口口口口口口口口 (这里就是纯粹的口鼻的口)

看一下255对应就是11111111就是FF;

两个循环知道是64*64像素

(i & 0x8) == 0  这里判断是不是 大于等于8的奇数倍且小于8的偶数倍?是为1,否则为0 

1^1=0

0^0=0

1^0=1

0^1=1 

上面四个就是异或(没有进位的加)

1*255=FF                           黑色FF FF FF

0*255=00                           白色00 00 00

当i=0时,显然j=0-7涂白色,接着8-15涂黑色,白色,黑色……

……

当i=8时,显然j=0-7涂黑色,接着8-15图白色,黑色,白色……

……

以上就正好形成一个64*64但看到的是8*8的黑白棋盘,如图所示的一个面就是

在我们弄的纹理里面,图的四个角是这样的坐标。

(0,1)(1,1)

(0,0)(1,0)    

然后用三角片画的一个正方形是有两个三角片构成。

b---c

| / |

a---d

上面贴的图三角形abc-00-01-11  三角形acd-00-11-10

normals[Index] = normal; points[Index] = vertices[a]; tex_coords[Index] = vec2(0.0, 0.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[b]; tex_coords[Index] = vec2(0.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[c]; tex_coords[Index] = vec2(1.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[a]; tex_coords[Index] = vec2(0.0, 0.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[c]; tex_coords[Index] = vec2(1.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[d]; tex_coords[Index] = vec2(1.0, 0.0); Index++;////新增或有更改


另一个有贴不一样的,三角形abc-00-11-01  三角形acd-00-11-01(明显前一个三角形贴图是扭曲过的)
normals[Index] = normal; points[Index] = vertices[a]; tex_coords[Index] = vec2(0.0, 0.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[b]; tex_coords[Index] = vec2(1.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[c]; tex_coords[Index] = vec2(0.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[a]; tex_coords[Index] = vec2(0.0, 0.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[c]; tex_coords[Index] = vec2(1.0, 1.0); Index++;////新增或有更改
normals[Index] = normal; points[Index] = vertices[d]; tex_coords[Index] = vec2(0.0, 1.0); Index++;////新增或有更改

下面图片是旋转等变换以后截的图

 

版权声明:会者不难 不会者难

【OpenGL】纹理贴图实例-棋盘

简单的纹理贴图实例,来学习OpenGL的功能 //main.h #if !defined_MAIN_H_ #define _MAIN_H_ #include #define WIDTH 64 ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

OpenGL纹理映射--基础篇

转载地址:http://www.360doc.com/content/14/1028/09/19175681_420504132.shtml 纹理映射意思就是把图片(或者说纹理)映射到3D模型的一个...

PCA数据降维(Eigenfaces特征脸)

介绍了PCA算法的基本原理,以人脸图像提取Eigeanface为例,分析了PCA算法的流程...

计算机图形学之纹理的作用

说到纹理我们很难用文字描述:我先上图:大家发现了什么吗。 细细看: 我们第二幅模型是通过纹理映射技术给了模型一些真实感,纹理映射这个概念待会谈。那么大家千万不要以为第二幅图就一定使用了纹理映射不一...

OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

读取bmp等图片格式中的像素还 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退出也会First-chance e...

经过纹理贴图的棋盘

  • 2012年03月22日 08:53
  • 3KB
  • 下载

OpenGL 两个纹理贴图

  • 2015年09月23日 19:26
  • 11.44MB
  • 下载

OPENGL 纹理贴图 过滤 mipmaps (shader)

文章来源于:http://www.opengl-tutorial.org/cn/beginners-tutorials/tutorial-5-a-textured-cube/ 本课学习如下几...
  • hyszyl
  • hyszyl
  • 2016年02月03日 11:28
  • 1298
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解读OpenGL棋盘纹理贴图
举报原因:
原因补充:

(最多只允许输入30个字)