c++ - 如何在 OpenGL 中只平移场景中的一个对象?

标签 c++ opengl translate

我的 OpenGL 游戏中有一个墙图案 DrawWall 和一架飞机 DrawAirplane。如何插入和弹出当前矩阵并仅平移场景中的墙?

我希望飞机能修好。

private: void DrawWall(){
    glPushMatrix(); 
    glBegin(GL_POLYGON); 
    LeftWallPattern();
    glEnd();
    glBegin(GL_POLYGON);
    RightWallPattern();
    glEnd();
    glPopMatrix();
}

private: void DrawAirplane(){ 
    glPushMatrix(); 
    glBegin(GL_LINE_LOOP);
    //...
    glEnd();
    glPopMatrix();
}

public: void Display(){
    glClear(GL_COLOR_BUFFER_BIT);
    glTranslatef(0, -0.02, 0);
    DrawWall();
    DrawAirplane();
    glFlush();
}

最佳答案

使用glPushMatrix() 插入当前矩阵,执行glTranslate 并绘制墙壁,然后使用glPopMatrix() 绘制平面。这应该只平移墙。问题是您似乎是在显示中进行翻译,而不是在应该在 DrawWall 中进行翻译。

关于c++ - 如何在 OpenGL 中只平移场景中的一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179665/

相关文章:

c++ - vector 中的 vector - 更改特定元素

c++ - 无法访问派生类中的基变量

java.lang.NoSuchMethodError : javax. media.opengl.GLDrawableFactory.initSingleton()V

OpenGL + gtkglextmm + 林间空地

c - 将这个简单的 C 代码转换为 VBA

使用 std::string::c_str() 时的 C++11 类型转换 heisenbug

c++ - 尝试使用旋转矩阵,但失败了

opengl - 链接器错误: undefined reference to symbol 'glOrtho'

c - MIPS 到 C 的翻译

静态变量中的 qt tr()