| | 591 | [[Image(point-cloud.png,right)]] |
| | 592 | === Exercises #3 === |
| | 593 | 1.Insert {{{teapot.c}}} interactivity example into {{{wavefront.c}}} above and save it as {{{motorbike.c}}}. |
| | 594 | Verify that there is no compile problems ant that the {{{main()}}} contains {{{read_wavefront("motorBike.obj");}}}. |
| | 595 | Disable lengthy saving in {{{main()}}}. |
| | 596 | 2. Instead of drawing of the teapot in {{{display()}}} we will draw single vertex array object as a point cloud with |
| | 597 | {{{ |
| | 598 | #!c |
| | 599 | glDrawArrays(GL_POINTS, 0, vertices); |
| | 600 | }}} |
| | 601 | To be able to draw this, we need to prepare Vertex Array Object and buffer with {{{init();}}} that is called from {{{main()}} just before {{{glutMainLoop();}}} |
| | 602 | {{{ |
| | 603 | #!c |
| | 604 | void init() |
| | 605 | { |
| | 606 | GLuint VAO[1]; |
| | 607 | GLuint Buffer[1]; |
| | 608 | glGenVertexArrays(1, VAO); |
| | 609 | glBindVertexArray(VAO[0]); |
| | 610 | glGenBuffers(1, Buffer); |
| | 611 | glBindBuffer(GL_ARRAY_BUFFER, Buffer[0]); |
| | 612 | glBufferData(GL_ARRAY_BUFFER, vertices*3*sizeof(GLfloat), |
| | 613 | vertex, GL_STATIC_DRAW); |
| | 614 | glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL); |
| | 615 | glEnableVertexAttribArray(0); |
| | 616 | } |
| | 617 | }}} |
| | 618 | |