OpenGL像素默认像素存储格式
来源:互联网 发布:女生基本款 知乎 编辑:程序博客网 时间:2024/05/17 20:31
OpenGL的像素存储格式是有glPixedStore来设定的,默认情况下相邻两行的存储的位置是相差4的整数倍,
也就是一行的存储要用4的整数倍的字节,不够的情况下要补充。举例说明:
一个2*2的红色图片(用GL_UNSIGNED_BYTE来表示一个颜色通道)的默认存储格式为:
(255,0,0),(255,0,0)_ _
(255,0,0),(255,0,0)_ _
这里(255,0,0)表示三个连续的byte,“_”表示一个byte,这样一行就是“(255,0,0),(255,0,0)_ _”,正好是8个byte,这里“_”表示补充的byte。
用代码来测试一下:读取RGBA,然后再提取其中的RGB,在画到屏幕上:
#include <glew.h>#include <freeglut.h>#include <iostream>#include<vector>using namespace std;int WinX = 512, WinY = 512;void initialize(){if (glewInit()!=GLEW_OK){cout << "failed to init glew\n"; exit(0);}int para;glGetIntegerv(GL_PACK_ALIGNMENT, ¶);cout << para << endl;glGetIntegerv(GL_UNPACK_ALIGNMENT, ¶);cout << para << endl;glClearColor(0., 0., 0., 1);}void reshape(int w, int h){WinX = w; WinY = h;glViewport(0, 0, w, h);}void display(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);{glColor3f(0, 0, 1);glVertex3f(0, 0, 0);glVertex3f(0.9, 0, 0);glVertex3f(0, 1, 0);}glEnd();vector<unsigned char> image(WinX*WinY * 4);glReadPixels(0, 0, WinX, WinY, GL_RGBA, GL_UNSIGNED_BYTE, image.data());vector<unsigned char >data;int len = WinX*3 ;if (len % 4) len += 4 - (len % 4);data.resize(len*WinY);for (int i = 0; i < WinY; i++){auto *ptr = data.data() + i*len;int id2 = 0;for (int j = 0; j < WinX; j++){int id = (i*WinX + j) * 4;ptr[id2++] = image[id++];ptr[id2++] = image[id++];ptr[id2++] = image[id++];}}glClear(GL_COLOR_BUFFER_BIT);glDrawPixels(WinX, WinY, GL_RGB, GL_UNSIGNED_BYTE, data.data());glFinish();}void main(int argc,char **argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);glutInitWindowSize(WinX, WinY);glutCreateWindow(argv[0]);glutDisplayFunc(display);glutReshapeFunc(reshape);initialize();glutMainLoop();}
0 0
- OpenGL像素默认像素存储格式
- opengl像素格式
- OpenGL像素格式-PIXELFORMATDESCRIPTOR
- 像素格式OpenGL
- OpenGL像素格式
- OpenGL像素格式
- MFC和opengl像素格式
- OpenGL 数据格式 像素格式 数据包格式 详解
- opengl像素格式和RC管理
- OpenGL学习二十五:像素存储模式
- 《高效学习OpenGL》之 openGL设置窗口像素格式
- openGL第四讲——像素格式管理
- Windows中设置OpenGL像素格式的两种方法
- openGL第四讲——像素格式管理
- OpenGL(2)——像素格式和RC管理
- Opengl RC(Render context,渲染上下文)与像素格式(转)
- OpenGL学习笔记:像素
- OpenGL像素处理流程
- Spring事务不回滚
- C++第13周项目 多态性 【项目3-形状类族的中的纯虚函数】
- 函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)
- 动态规划 problem L
- assert的用法简介
- OpenGL像素默认像素存储格式
- Python 修改文件重命名代码
- Java千百问_06数据结构(021)_StringBuffer/StringBuilder有什么区别
- struts2:This method: login for action user is not allowed!
- C++第13周项目 多态性 【项目4-立体类族共有的抽象类】
- Android中InstanceState()使用详解
- ZOJ2314Reactor Cooling(无源汇上下界可行流)
- 为什么你有10年经验,但成不了专家?
- mybatis中的#和$的区别