我电脑是win7 64位的,用vs2010调试一个win32程序,ok。然后我把平台换成x64,Rebuild,调试发现问题。下面贴出部分代码:
vector<float> sift_buffer;
//经过其他操作,sift_buffer被赋值
float * buffer1 = &sift_buffer[0];
glReadPixels(0, 0, 16, (_num_sift[0] + 15)/16, GL_RED, GL_FLOAT, buffer1);
通过调用glReadPixels函数,sift_buffer中的值会被更改。
我查看了下,在win32和x64平台下,传给glReadPixels函数的sift_buffer值是一样的,但是经过glReadPixels函数后,sift_buffer值不再一样。开始一部分数据都一样,但后来数据发生了偏移,win32下sift_buffer[686]、sift_buffer[687]、sift_buffer[688]和x64下的sift_buffer[688]、sift_buffer[689]、sift_buffer[690]对上了。后面的数据也有很多是偏移的。请问这是什么原因导致的呢?