内存对齐:
字长32位的计算机上,如果数据在内存中按照32位的边界对齐(地址为4字节的倍数),那么硬件提取数据的速度就会快得多,类似的在64位计算机上,如数据地址按照8字节对齐,他对数据存取效率会非常高
举例:图像每行按照4字节方式进行存储,如果图像宽度是5个像素。RGB各占一个字节,那么每行=5*3=15个字节,按照4字节方式存储每行会浪费一个自己的存储空间
如果每行按照1字节方式存储,每一行的数据都是从下一个可用的字节开始存储,这样虽然不会浪费内存空间,但是性能不能4字节的好,同理2字节方式数据的起始地址是2的倍数
举例2:如果每个像素保存1位数据,行长度是75,如果对齐值是4,那么最小4的倍数且大于75/8的12 也就是说每行需要12个字节。如果对齐值是1 那么最小4的倍数且大于75/8的10 也就是说每行需要10个字节
glPixelStore{if}(Glenum pname,TYPE param)
glPixelStore参数 | |
GL_UNPACK_SWAP_BYTES,GL_PACK_SWAP_BYTES | 如果为TRUE 字节翻转存储 |
GL_UNPACK_LSB_FIRST,GL_PACK_LSB_FIRST | 如果为FALSE 字节从最高有效位存储0x31为{0,0,1,1,0,0,0,1} 如果为true 字节从最高有效位存储0x31为{1,0,0,0,1,1,0,0} |
GL_UNPACK_ROW_LENGTH,GL_PACK_ROW_LENGTH | 当从内存读取矩形的图像数据小于内存图像数据矩形实际长度,需要设置这个值进行指定,如果这个值为0,使用glDrawPixels,glCopyPixels,glReadPiexls所指定的宽度值 |
GL_UNPACK_SHIP_ROWS,GL_PACK_SHIP_ROWS | 如果从内存读取的子矩形图形数据并不是从0,0开始作为起点,使用这个进行设置起始点(ROW) |
GL_UNPACK_SHIP_PIXELS,GL_PACK_SHIP_PIXELS | 如果从内存读取的子矩形图形数据并不是从0,0开始作为起点,使用这个进行设置起始点(COL) |
GL_UNPACK_ALIGNMENT,GL_PACK_ALIGNMENT | 设置内存对其方式 |
GL_UNPACK_IMAGE_HEIGHT,GL_PACK_IMAGE_HEIGHT | |
GL_UNPACK_SKIP_IMAGE,GL_UNPACK_SKIP_IMAGE |
相关推荐
### OpenGL学习知识点详解 #### 一、OpenGl简介与预备知识 **1.1 引言** 本教程旨在为读者提供一个系统性学习OpenGl的平台。OpenGl是一种跨语言、跨平台的应用程序接口(API),用于渲染二维、三维矢量图形。它是...
### OpenGL入门学习之十——BMP文件与像素操作 #### 关键知识点概览: 1. **像素图与矢量图的区别** 2. **BMP文件格式解析** 3. **OpenGL中的像素操作** #### 详细解释: **一、像素图与矢量图的区别** 在...
`glutInit()`、`glutInitDisplayMode()`、`glutInitWindowPosition()`、`glutInitWindowSize()`和`glutCreateWindow()`分别用于初始化GLUT、设置显示模式、设定窗口位置和大小以及创建OpenGL窗口。`glutDisplayFunc...
这个“OpenGL.rar”压缩包包含了OpenGL的参考手册,提供了对OpenGL API的详细解释,对于学习和开发使用OpenGL的应用程序至关重要。 OpenGL参考手册通常分为多个部分,包括核心规范、扩展规格、以及编程指南等。手册...
OpenGL ES是Android系统中用于图形渲染的重要库,它是OpenGL的一个精简版本,专门针对嵌入式设备和移动设备设计,如智能手机和平板电脑。在Android平台上,OpenGL ES被广泛用于2D和3D图形应用程序的开发,提供了一个...
4. **着色器(Shaders)**:现代OpenGL使用GLSL(OpenGL Shading Language)编写着色器,控制像素和顶点的处理。 5. **状态机模型(State Machine Model)**:OpenGL通过设置一系列的状态来决定如何处理图形数据,如...
在这个“OpenGL ES 学习demo”中,我们可以看到一系列的示例代码和项目,用于帮助初学者理解并实践基本的OpenGL ES绘图操作。 首先,让我们来探讨一下OpenGL ES的基础概念: 1. **坐标系统**:OpenGL ES 使用右手...
本项目“OpenGL制作的五角星”是初学者学习OpenGL的一个良好起点,通过这个简单的实例,我们可以深入理解OpenGL的基本概念和核心功能。 首先,我们要了解OpenGL的工作原理。OpenGL是一个基于向量图的API,它不直接...
在学习过程中,掌握这些基本概念和操作后,你可以逐步深入研究更高级的主题,如光照、投影、混合模式、多重采样抗锯齿、后期处理特效以及现代OpenGL的向量和矩阵操作。同时,了解现代图形编程范式,如图元装配、光栅...
与RGBA模式不同,颜色索引模式中,每个像素存储的不是直接的颜色值,而是一个指向颜色索引表的索引值。颜色索引表是一组预定义的颜色集合,其大小通常在256至4096个颜色之间,且总是2的幂次方。 在绘制过程中,...
OpenGL实验2是一个深入学习计算机图形学的实践环节,主要聚焦于使用OpenGL库进行交互式图形渲染。OpenGL是一种跨语言、跨平台的编程接口,用于渲染2D和3D图形。这个实验旨在帮助学生理解如何利用OpenGL创建动态、...
使用 OpenGL 来绘制像素图,需要了解像素的数据结构和存储方式。OpenGL 提供了多种像素操作函数,可以实现像素的读取、写入和操作。 本资源主要介绍了 BMP 文件格式、BMP 文件头、读取图象大小信息、像素数据、分配...
OpenGL支持三种主要的操作模式: - **渲染模式**:最常用的模式,用于绘制图形到像素缓存。 - **选择模式**:允许用户从当前场景中选择特定的几何对象,常用于交互式应用。 - **反馈模式**:将当前场景中的数据读回...
5. **状态机**:OpenGL包含一系列的状态,如深度测试、混合模式、着色器程序等,开发者可以通过设置这些状态来控制渲染过程。 6. **帧缓冲区和离屏渲染**:帧缓冲区是显示图像的地方,而离屏渲染则允许在不直接显示...
通过这个实验,学习者可以深入理解OpenGL的基本概念,如顶点数组、着色器编程以及如何使用OpenGL进行2D和3D渲染。同时,随机生成元素增加了程序的趣味性和实践性,有助于锻炼编程者在实际项目中解决问题的能力。对于...
OpenGL 函数大全 OpenGL 是一个跨平台的图形 API,提供了一个强大且灵活的图形渲染引擎。OpenGL 函数大全是 OpenGL 中的核心组件之一,提供了大量的函数来处理图形渲染、几何图形...* glPixelStore:设置像素存储模式
OpenGL是计算机图形学中的一个强大库,用于在各种操作系统和硬件平台上创建二维和三维图形。这个"opengl课件PPT"包含了一系列关于OpenGL的学习资料,可能是为了教授或自学OpenGL编程而准备的。课件可能涵盖了OpenGL...
OpenGL是计算机图形学中的一种广泛应用的编程接口,用于在各种操作系统和硬件上生成二维和三维图像。本资料包“opengl学习”旨在帮助你深入理解OpenGL,并进一步提升你的图形编程能力。 Lesson02可能代表着一系列...
- **功能描述**:用于定义像素存储的一些模式,如行序等。 **glPixelTransfer**: 设置像素传输模式。 - **功能描述**:用于定义像素数据转换时的行为,如缩放、位移等。 **glPixelMap**: 设置像素映射。 - **功能...
OpenGL ES编程指南是一本针对移动设备和嵌入式系统的图形编程权威书籍,主要聚焦于OpenGL ES 2.0版本。OpenGL ES(Embedded Systems)是OpenGL的轻量级版本,专为资源有限但需要高质量3D图形处理能力的平台设计,如...