gpt4 book ai didi

c++ - gluUnproject 问题/移动角色问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:39 25 4
gpt4 key购买 nike

大家好,我在这里阅读了很多关于如何使用 gluUnproject 的文章,我认为我基本上了解了它的作用。但是,是的,我的问题是这个.. 我有 1 架飞机,如果我点击那里没有问题,我的对象会去那里,但如果我点击它外面很好,我的对象就会消失,我不知道为什么要这样做,我该如何修复它?这是我的 gluUnproject 函数

GetOGLPos(float x, float y)
{
GLint viewport[4];
GLfloat depth[2];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;

glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
glGetDoublev( GL_PROJECTION_MATRIX, projection );
glGetIntegerv( GL_VIEWPORT, viewport );

winX = (float)x;
winY = (float)viewport[3] - (float)y;
glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, depth );

gluUnProject( winX, winY, depth[0], modelview, projection, viewport, &posX, &posY, &posZ);

std::cout<< posX<<" "<<posZ<<std::endl;
PosP.x = posX;
PosP.z = posZ;

PosP.y = 20.0f;
}

我只是打印值以了解对象的去向,PosP 是一个 Vector,我移动我的角色并传递给它那个变量(顺便说一句,我在这个项目中没有物理或类似的东西)

最佳答案

检查您从深度缓冲区中读取的深度。如果深度值是您设置的 glClearDepth 值(或足够接近它),那么您就知道那里没有渲染任何东西。所以不要将对象放在那个位置。

关于c++ - gluUnproject 问题/移动角色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com