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

在使用OpenGL绘制矩形时,通过glColorPointer和glVertexPointer设置颜色和顶点。遇到的问题是,使用Vector::data()获取的指针偏移计算错误,导致颜色显示不正确。原本需要的颜色偏移值为sizeof(float) * 3,但由于Vector::data()返回的是VColor类型的指针,直接进行偏移导致字节数错误。解决方案是将指针转换为char*类型后再进行偏移,使得颜色能够正常显示。
摘要由CSDN通过智能技术生成

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

显示列表生成:

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

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

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

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

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

位置移动和绘制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值