OpenGL ARToolkit - 基于KeyEvent调用绘图函数

时间:2018-03-23 13:53:50

标签: c opengl artoolkit

我有两个绘图功能 - " drawComponents"和" drawSignals"看起来如下:

    static void drawComponents(ARdouble trans1[3][4], ARdouble trans2[3][4], int r, int g, int b )
{
    for (int i = 0; i < numComponents; i++){

        glPushMatrix(); // Save world coordinate system.
        glTranslatef(0.0f, 0.0f, 0.0f); 
        glEnableClientState(GL_VERTEX_ARRAY);

        glVertexPointer(3, GL_FLOAT, 0, &(components[i].combCoords[0]));
        glColor4ub(r, g, b, 0);
        glDrawElements(GL_LINES, components[i].nIndeces, GL_UNSIGNED_INT, &(components[i].combIndeces[0]));
        glDisableClientState(GL_VERTEX_ARRAY);

        glPopMatrix();    // Restore world coordinate system.
    }

}

static void drawSignals(ARdouble trans1[3][4], ARdouble trans2[3][4], int r, int g, int b)
{
    for (int i = 0; i < numSignals; i++)
    {

        glPushMatrix(); // Save world coordinate system.
        glTranslatef(0.0f, 0.0f, 0.0f);
        glEnableClientState(GL_VERTEX_ARRAY);

        glVertexPointer(3, GL_FLOAT, 0, signal[i].combCoords);
        glColor4ub(r, g, b, 0);
        glDrawElements(GL_LINES, signal[i].nIndeces, GL_UNSIGNED_INT, &(signal[i].combIndeces[0]));
        glPopMatrix();
    }
}

如果我直接在MainLoop中调用它们,这些函数可以正常工作,但我想根据用户输入调用它们。所以如果&#34; 1&#34;按下键然后将调用drawComponents,如果&#34; 2&#34;按下键将调用drawSignals函数。

要做到这一点,我有以下keyEvent函数:

static void  keyEvent(unsigned char key, int x, int y)
{
    switch (key) {
    case '1':
        drawComponents(config->trans, config->marker[3].trans, 255, 0, 0);
        break;
    case '2':
        drawSignals(config->trans, config->marker[3].trans, 0, 0, 255);
        break;
    }
}

我认为可以正常工作,但是使用此功能时,按键时没有任何反应。任何人都对我出错的地方有任何建议

0 个答案:

没有答案