解决点击 PLHotspot 不响应 didClickHotspot 代理方法的问题
使用panoramagl做全景展示 https://code.google.com/p/panoramagl/
额...解决过程很坎坷,断点了一个多小时确定了问题所在
PLRenderer.m中的
1 |
-(void)createRayWithScreenPoint:(CGPoint)point ray:(PLVector3 **)rayVectors |
返回的rayVectors指针不正常
进而发现
1 |
gluUnProject(point.x, y, 0.0f, mvmatrix, projmatrix, viewport, &pos.x, &pos.y, &pos.z); |
&pos.x, &pos.y, &pos.z arm64下得到的值变成了科学计数法,心想tmd一定是溢出了,类型不对啊这是
一顿谷歌之后,发现gluUnProject的定义为
1 2 3 4 5 |
gluUnProject(GLfloat winx, GLfloat winy, GLfloat winz, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4], GLfloat* objx, GLfloat* objy, GLfloat* objz) |
"GLfloat* objx, GLfloat* objy, GLfloat* objz"
点进pos这个结构体替换CGFloat 为 GLfloat 问题解决
用 float ,编译器不同,内存大小可能设为32或者64 位,
GLfloat (typedef float GLfloat;)不会出现这种问题。也是导致这个问题的原因
附:修改后的PanoramaGL :https://github.com/shaojiankui/PanoramaGL
....