遇到一个很囧蛋的问题,关于指针的,已解决
我有这么一段代码,大意是,从摄像头获得照片的指针,然后绘制图像。并非没有成功,而是在尝试另一种可能更快的方式的时候,遇到了错误。
错得我百思不得其解。
正常的代码
异常的代码
按道理来说,两者效果应该是一样的。
正常代码的思路是:
用循环每次选定一个像素,然后投入值。
异常代码的思路是:
首先取得“首像素”的地址,投入值之后偏移地址。
后者速度上应该更快。(我是这么猜想的)
但是为什么后者出现异常了呢?我百思不得其解。
难道这两段代码有我没注意到的区别?
补充说明:
摄像头返回的数据地址格式是32位的RGBA,图像像素是640*480。
一个RGBA像素大小是 ushort (32位)
每个RGBA成员大小是 uchar ( 8位)
R:红;G:绿;B:蓝;A:透明(这里 A 我们不考虑)
涉及到的定义:
//类型定义
typedef struct _Depth_Color
{
GLfloat R;
GLfloat G;
GLfloat B;
}Depth_Color;
//变量定义
Depth_Color* Video_RGB;
Depth_Color Depth_RGB[640][480];
我有这么一段代码,大意是,从摄像头获得照片的指针,然后绘制图像。
并非没有成功,而是在尝试另一种可能更快的方式的时候,遇到了错误。
错得我百思不得其解。
正常的代码
异常的代码
按道理来说,两者效果应该是一样的。
正常代码的思路是:
用循环每次选定一个像素,然后投入值。
异常代码的思路是:
首先取得“首像素”的地址,投入值之后偏移地址。
后者速度上应该更快。(我是这么猜想的)
但是为什么后者出现异常了呢?我百思不得其解。
难道这两段代码有我没注意到的区别?
补充说明:
摄像头返回的数据地址格式是32位的RGBA,图像像素是640*480。
一个RGBA像素大小是 ushort (32位)
每个RGBA成员大小是 uchar ( 8位)
R:红;G:绿;B:蓝;A:透明(这里 A 我们不考虑)
涉及到的定义:
//类型定义
typedef struct _Depth_Color
{
GLfloat R;
GLfloat G;
GLfloat B;
}Depth_Color;
//变量定义
Depth_Color* Video_RGB;
Depth_Color Depth_RGB[640][480];
[ 本帖最后由 hackerjiang 于 2011-11-16 19:57 编辑 ]