Vector::data()在opengl颜色顶点混合数组中的使用问题

使用glcolorpointer() 和glvetexpointer()绘制矩形的代码如下

Vector::data()在opengl颜色顶点混合数组中的使用问题

显示列表生成:

这里我遇到的一个问题就是glcolorpointer传递指针的偏移,我需要的颜色偏移值为sizeof(float)*3  就是结构题里面的float x,y,z 三个元素 ,所以颜色偏移值为12字节

但是我一直得不到正确的颜色显示

原因在于vector::data()返回的是传入模版的指针 在这里返回的是我自己定义的VColor* 我对VColor*类型的指针进行了+12  这里偏移的字节量 为sizeof(VColor)*12 = 4*7*12=332字节,

自然是得不到正确的的结果

在对指针类型转化成char*之后 字节正常偏移,颜色显示正常

Vector::data()在opengl颜色顶点混合数组中的使用问题

位置移动和绘制

Vector::data()在opengl颜色顶点混合数组中的使用问题

 

错误的绘制画面:不一定能出来颜色,因为已经超过传递的数组颜色了

Vector::data()在opengl颜色顶点混合数组中的使用问题

正确绘制的效果:

Vector::data()在opengl颜色顶点混合数组中的使用问题