opengl纹理映射的学习总结

 1.不同的滤波方式的效果区别

使用Nearest滤波纹理的效果:看起来很斑驳

使用MipMapped的效果:看起来很平滑

 

2.

void glTexImage1D

 (GLenum  

 target,

 

GLint  

level,

 

GLint  

internalFormat,

 

GLsizei  

width,

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

 

void glTexImage2D(

GLenum  

target,

 

GLint  

level,

 

GLint  

internalFormat,

 

GLsizei  

width,

 

GLsizei  

height,

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);



  

void glTexImage3D(

GLenum  

target,

 

GLint  

level,

 

GLint  

internalFormat,

                      

GLsizei

width,

GLsizei

height,

 

GLsizei  

depth

 

GLint  

border,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

 


这三个opengl函数用于从一个类存缓冲加载纹理数据,它们告诉了opengl如何解析data参数所指向的纹理数据。Opengl从data所指向的位置复制纹理信息,这种数据复制的代价是很高的。

九个参数:

(1).      target

对应了GL_TEXTURE_1D或者GL_TEXTURE_2D或者GL_TEXTURE_3D

 

(2).      internalFormat

GL_ALPHA              按照alpha值来存储纹理单元

GL_LUMINANCE          按照亮度值来存储纹理单元

GL_LUMINANCE_ALPHA    按照亮度和alpha值来存储纹理单元

GL_RGB                 按照RGB成分存储纹理单元

GL_RGBA                按照RGBA成分来存储纹理单元

 

(3.)      width, height, depth指定被加载纹理的宽度,高度,深度。这些值必须是2的指数。并不要求三维都相等。避免使用非2的整数次方的纹理。

 

(4).      border边界允许我们对边界处的纹理进行设置,对它的宽度,高度深度进行扩展。对纹理过滤的处理中,纹理边界扮演了重要的角色。

 

(5). format

GL_RGB                

GL_RGBA 

GL_BGR

GL_BGRA

GL_RED

GL_GREEN

GL_BLUE

GL_ALPHA              

GL_LUMINANCE          

GL_LUMINANCE_ALPHA  

GL_STENCIL_INDEX              每个像素包含单一的模板索引

GL_DEPTH_COMPONENT         每个像素包含单一的深度成分

 

(6). type

 GL_UNSIGNED_BYTE            每种颜色的成分是8个无符号整数

 GL_BYTE

GL_BITMAP                   单个位、无颜色数据,和glBitmap相同

GL_UNSIGNED_SHORT

GL_SHORT

GL_UNSIGNED_INT

GL_INT

GL_FLOAT

CL_UNSIGNED_BYTE_3_2_2        经过包装的RGB


通过glTexImage函数所加载的纹理数据将经历(与像素和图像处理管线相同的)过程:像素包装,像素缩放,颜色表,积卷等操作

3.

void glTexSubImage2D(

GLenum  

target,

 

GLint  

level,

 

GLint  

xoffset,

 

GLint  

yoffset,

 

GLsizei  

width,

 

GLsizei  

height,

 

GLenum  

format,

 

GLenum  

type,

 

const GLvoid *  

data);

这个函数用于更新纹理,如果一个已经加载的纹理不再需要,可以被替换,可以全部替换也可以只替换一部分,替换的一个纹理图往往比glTexImage加载一个新纹理要快。Width和height只能是替换纹理真实的大小,如果对width和height的值进行改变会导致替换纹理失真。如果原纹理的大小和替换纹理的大小相同,原纹理将完全被替换。如果原纹理比替换纹理还小将看不到替换效果。如果原纹理比替换纹理大将替换原纹理的一部分,1/4、1/8…..


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值