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