将对象固定到OpenGL中的屏幕

时间:2019-01-04 12:47:43

标签: c++ opengl

我想为使用openGL / glut开发的游戏制作FPS相机。我想总是看到枪的同一部分。因此,我想将枪固定在屏幕上,并且当我的相机改变时,我的枪也改变。相机旋转时会出现问题。在某点上我丢了枪,看不到它。我有一堂课GunCamera

我试图将喷枪设置为与相机相同的旋转角度,并使其与相机的位置几乎相同。但是当我旋转时它失败了。我有这样的课程GunCamera

class GunCamera : public Camara
{
 Solido *s;
public:
void setSolido(Solido *s) { this->s = s; }
Solido *getSolido() { return s; }
GunCamera(double x = 0, double y = 1.65, double z = 0) :Camara(x, y, z) {}
void update(double dt) {
    //Transform to radians
    double ry = rot2rad(getRot().getY());
    Vector3D vel = { -sin(ry),0,cos(ry) };
    setPos(getPos() - vel * dt);
}
void render() {
    glRotatef(getRot().getX(), 1, 0, 0);
    glRotatef(getRot().getY(), 0, 1, 0);
    glRotatef(getRot().getZ(), 0, 0, 1);
    glTranslatef(-getPos().getX(), -getPos().getY(), -getPos().getZ());
    s->setRot(Vector3D(this->getRot().getX(), -this->getRot().getY(), this->getRot().getZ()));
    s->setPos(Vector3D(this->getPos().getX(), this->getPos().getY() - 3.5, this->getPos().getZ() + 5));

}
};

错误出现在渲染方法中。

0 个答案:

没有答案