当前位置: 首页 > 知识库问答 >
问题:

如何使多个形状出现在同一屏幕上?

曾沛
2023-03-14

我在写一个程序,允许用户通过菜单选项画出不同的形状,画出后的形状需要在同一屏幕上,但问题是在菜单中选择另一个选项画出另一个形状后,前一个形状就消失了。我该怎么解决这个?这是我的程序:

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);

    if (shape == 1)
    {
        draw_rectangle();
    }

    if (shape == 2)
    {
        draw_circle();
    }

    glFlush();
}

void menu(int choice)
{
    switch (choice)
    {
    case 1:
        shape = 1;
        break;
    case 2:
        shape = 2;
        break;
    }
    glutPostRedisplay();
}

GLCLEAR(GL_COLOR_BUFFER_BIT)仅在DISPLAY()中。

共有1个答案

雷浩思
2023-03-14

您必须为每个形状使用单独的布尔状态变量(regangle_shapecircle_shape),而不是一个指示形状的整数变量(shape):

bool rectangle_shape = false;
bool circle_shape = false;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);

    if (rectangle_shape)
    {
        draw_rectangle();
    }

    if (circle_shape)
    {
        draw_circle();
    }

    glFlush();
}

void menu(int choice)
{
    switch (choice)
    {
    case 1:
        rectangle_shape = !rectangle_shape;
        break;
    case 2:
        circle_shape = !circle_shape;
        break;
    }
    glutPostRedisplay();
}
 类似资料:
  • 我对编程相对较新,我试图创建一个程序,创建一个紫色的球,我点击它向右移动,直到它离开屏幕,在那里我可以一次在屏幕上有无限个球。我已经做了一个程序来做这个,但我只能有一个在屏幕上一次,如果我点击第二次,第一个球消失,被一个新的球取代。哦,当我点击第二次时,球不是从光标所在的地方开始的,而是从最后一个球在x轴上的地方开始的。救命啊! 代码如下:

  • 问题内容: 如何从一个活动屏幕导航到另一个活动屏幕?在第一个屏幕中,我有一个按钮,如果我单击该按钮,则必须移至另一个“活动”屏幕。 问题答案:

  • 我可以毫无问题地实现模态抽屉。但是我想在同一个屏幕上添加两个模态抽屉,一个从左边,一个从右边。在xml中很容易做到,但是我不知道如何在Jetpack中做到这一点。

  • 我用SpriteBatch绘制纹理,用ShapeRenderer绘制形状。 这是我在演员中的代码 并在屏幕上调用stage.draw() 它正在工作,但不可预测地抛出异常:

  • 我正在按照教程使用OpenGL在屏幕上画一个三角形。我已经正确地遵循了所有的步骤,但我只得到一个绿色屏幕,没有三角形。 这是我现在的代码。在应用程序初始化期间调用DrawScene,并在每个WM_DRAW中调用ResizeScene。我的问题是:为什么三角形没有显示在我的代码中? OpenGL版本:4.6

  • 我想创建一个多边形从形状点。