《高效学习OpenGL》 之 指定纹理 glTexImage2D(),gluScaleImage(), glCopyTexImage2D(),glTexSubImage2D()

更多精彩图形学视频教程,请访问 http://www.oxox.work/


定义一个二维纹理:

   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, 
                0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);
   void glTexImage2D (GLenum target, GLint level, GLint internalformat
	   , GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
   //target参数用于定义二维纹理;
   //如果提供了多种分辨率的纹理图像,可以使用level参数,否则level设置为0;
   //internalformat确定了哪些成分(RGBA, 深度, 亮度和强度)被选定为图像纹理单元
   //width和height表示纹理图像的宽度和高度;
   //border参数表示边框的宽度
   //format和type参数描述了纹理图像数据的格式和数据类型
   //pixels参数包含了纹理图像的数据,这个数据描述了纹理图像本身和它的边框


改变纹理图像的大小:

   int gluScaleImage (
	   GLenum      format, 
	   GLint       widthin, 
	   GLint       heightin, 
	   GLenum      typein, 
	   const void  *datain,//存储的纹理图像数据 
	   GLint       widthout, 
	   GLint       heightout, 
	   GLenum      typeout, 
	   void        *dataout);//最终的纹理图像数据

从帧缓存区读取一块矩形像素,并且把它定义为纹理单元:

   void glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, 
	   GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
   //纹理数组是从屏幕对齐的像素矩形读取的,它的左下角是(x, y)表示的坐标

查询纹理状态变量的值:

	void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
	//params参数中,返回一个特定细节层的纹理参数值,这个细节层由level参数指定;
	//target参数定义了目标纹理


定义一个二维纹理图像,替换当前一副现有的二维图像的全部或一块连续的区域:

         glTexSubImage2D(GL_TEXTURE_2D, 0, 12, 44, subImageWidth,
                         subImageHeight, GL_RGBA,
                         GL_UNSIGNED_BYTE, subImage);
		 void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height
			 , GLenum format, GLenum type, const GLvoid *pixels);
		 //pixels包含了表示子图像的纹理数据
		 //width和height表示表示子区域的宽度和高度
		 //xoffset和yoffset表示x和y方向上的纹理单元偏移量


你可能感兴趣的:(OpenGL,高效学习OpenGL)