Как сделать простое приложение для рисования, используя opengl / glut, используя c ++ на xcode - PullRequest
2 голосов
/ 05 марта 2012

Так что я могу регистрировать события мыши. Единственная проблема, с которой я столкнулся - это как вывести рисунок на экран. Я разместил ниже код, который я использую в настоящее время. все, что он делает, это рисует окно и несколько цветных линий. В идеале мне бы хотелось просто рисовать на экране, чтобы экран не отображался полностью каждый раз, когда я вызываю функцию рисования.

void myInit(void)
{
    glClearColor(1.0,1.0,1.0,0.0); // set white background color
    glColor3f(0.0f, 0.0f, 0.0f); // set the drawing color
    glPointSize(4.0); // a ‘dot’ is 4 by 4 pixels
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear the screen

    //First Line
    glLineWidth(8.0f);

    glBegin(GL_LINE_STRIP);
    glColor3ub(255, 0, 0);
    glVertex2i(40, 380);
    glColor3ub(0, 255, 0);
    glVertex2i(600, 380);

    glEnd();

    //Second Line
    glLineWidth(8.0f);

    glBegin(GL_LINE_STRIP);
    glColor3ub(0, 0, 255);
    glVertex2i(40, 250);
    glColor3ub(0, 255, 0);
    glVertex2i(600, 250);

    glEnd();

    //Third Line
    glLineWidth(8.0f);

    glBegin(GL_LINE_STRIP);
    glColor3ub(255, 0, 0);
    glVertex2i(40, 120);
    glColor3ub(0, 0, 255);
    glVertex2i(600, 120);

    glEnd();

    glFlush(); // send all output to display
}

int main(int argc, char** argv)
{
    //GLUT & OpenGL
    glutInit(&argc, argv); // initialize the toolkit
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // set display mode
    glutInitWindowSize(640,480); // set window size
    glutInitWindowPosition(100, 150); // set window position on screen
    glutCreateWindow("my first attempt"); // open the screen window
    glutDisplayFunc(myDisplay); // register redraw function
    myInit();
    glutMainLoop(); // go into a perpetual loop

}
...