首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:如何从opengl模型视图和投影矩阵中获取屏幕坐标(X,Y点)?

iOS:如何从opengl模型视图和投影矩阵中获取屏幕坐标(X,Y点)?
EN

Stack Overflow用户
提问于 2017-04-10 16:56:33
回答 1查看 121关注 0票数 1

我有模型视图矩阵,投影视图矩阵和位置槽以及正方形顶点。我想得到iPhone屏幕上正方形的屏幕坐标(X,Y点)。

代码语言:javascript
复制
static GLfloat rectVerts[] = {-0.1f,  -0.1f, 0.0f,-0.1f,
    0.1f, 0.0f,0.1f, 0.1f,
    0.0f,0.1f, -0.1f, 0.0f
    ,0.0f,0.0f,0.0f,1.0f};
GLKVector4 position_Vector = GLKVector4MakeWithArray(rectVerts);

float p_clip[4];
for (int i=0;i<4;i++){
    p_clip[i]=0;
}
for (int i=0;i<4;i++){
    for (int j=0;j<12;j++){
        p_clip[i] += ( modelViewprojection.m[i + j] * position_Vector.v[j]);
    }
}
float p_ndc[4];
p_ndc[0] = p_clip[0] / p_clip[3];
p_ndc[1] = p_clip[1] / p_clip[3];
p_ndc[2] = p_clip[2] / p_clip[3];
p_ndc[3] = p_clip[3] / p_clip[3];

GLint view[4]={0};
glGetIntegerv(GL_VIEWPORT,view);
CGRect rect =  CGRectMake(view[0], view[1], view[2], view[3]);
float x = (rect.origin.x + rect.size.width) *  (p_ndc[0] + 1) /2;
NSLog(@"Test x = %f",x);

请查看附件以供参考

EN

回答 1

Stack Overflow用户

发布于 2017-04-10 17:15:21

只需遵循转换步骤即可:

代码语言:javascript
复制
p_clip = P · MV · p
p_ndc = p_clip/p_clip.w
p_viewport.xy = viewport.xy + viewport.wh · (p_ndc.xy + 1) / 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43318811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档