C++中的OpenGL立体立方体 我试图用OpenGL的特性在C++中画出一个立体立方体,但是我想把它画在一个理想的位置,例如GLVTEX3F205,35。如何在给定位置绘制实心立方体?

C++中的OpenGL立体立方体 我试图用OpenGL的特性在C++中画出一个立体立方体,但是我想把它画在一个理想的位置,例如GLVTEX3F205,35。如何在给定位置绘制实心立方体?,c++,opengl,C++,Opengl,glTranslatefx,y,z。谷歌it,我认为也有2D版本。但这会将参考帧从堆栈中转换出来。如果需要设置更复杂的转换,则需要调用glpopmatrix和glpushmatrix。注意拼写和用法。要匹配您的问题并在OpenGL兼容性配置文件中绘制立方体,您可以使用以下代码: void drawCube(float x, float y, float z) { glBegin(GL_QUADS); glVertex3f(-1.0f+x, -1.0f+y, -

glTranslatefx,y,z。谷歌it,我认为也有2D版本。但这会将参考帧从堆栈中转换出来。如果需要设置更复杂的转换,则需要调用glpopmatrix和glpushmatrix。注意拼写和用法。

要匹配您的问题并在OpenGL兼容性配置文件中绘制立方体,您可以使用以下代码:

    void drawCube(float x, float y, float z) 
    {
    glBegin(GL_QUADS); 
    glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
    glVertex3f(1.0f+x, -1.0f+y, -1.0f+z);
    glVertex3f(1.0f+x, 1.0f+y, -1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);

    glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
    glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);

    glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
    glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, -1.0f+y, -1.0f+z);

    glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);

    glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);

    glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);
    glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
    glVertex3f(1.0f+x, 1.0f+y, -1.0f+z);

    glEnd();
     }
我不建议使用此功能,而是使用另一个答案中描述的解决方案。像这样的功能:

    void drawCube(float x, float y, float z) 
    {
        glPushMatrix();
        glTranslatef(x, y, z);

        glBegin(GL_QUADS); 
        glVertex3f(-1.0f,-1.0f ,-1.0f);
        glVertex3f(1.0f, -1.0f, -1.0f);
        glVertex3f(1.0f, 1.0f, -1.0f);
        glVertex3f(-1.0f, 1.0f, -1.0f);

        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, -1.0f, 1.0f);
        glVertex3f(-1.0f, 1.0f, -1.0f);
        glVertex3f(-1.0f, 1.0f, 1.0f);

        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, -1.0f, 1.0f);
        glVertex3f(1.0f, -1.0f, 1.0f);
        glVertex3f(1.0f, -1.0f, -1.0f);

        glVertex3f(-1.0f, -1.0f, 1.0f);
        glVertex3f(1.0f, -1.0f, 1.0f);
        glVertex3f(1.0f, 1.0f, 1.0f);
        glVertex3f(-1.0f, 1.0f, 1.0f);

        glVertex3f(-1.0f,-1.0f ,1.0f );
        glVertex3f(1.0f, -1.0f, 1.0f);
        glVertex3f(1.0f, 1.0f, 1.0f);
        glVertex3f(-1.0f, 1.0f, 1.0f);

        glVertex3f(-1.0f, 1.0f, -1.0f);
        glVertex3f(-1.0f, 1.0f, 1.0f);
        glVertex3f(1.0f, 1.0f, 1.0f);
        glVertex3f(1.0f, 1.0f, -1.0f);
        glEnd();

        glPopMatrix();
    }

这个功能还远远不够完善,但应该足够了。快乐编码

一,。你试过什么?给我们看代码!2.具体来说,您在哪里遇到了问题?为了补充tzaman所说的,我建议尽可能使用glut。他们有一个功能,可以很容易地使一个固体或金属立方体。双倍大小;