| 652 | | 2. Instead of drawing of the teapot in {{{display()}}} we will draw single vertex array object as a point cloud with |
| 653 | | {{{ |
| 654 | | #!c |
| 655 | | //glutSolidTeapot(0.6); |
| 656 | | glDrawArrays(GL_POINTS, 0, vertices); |
| 657 | | }}} |
| 658 | | 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();}}} |
| 659 | | {{{ |
| 660 | | #!c |
| 661 | | void init() |
| 662 | | { |
| 663 | | GLuint VAO[1]; |
| 664 | | GLuint Buffer[1]; |
| 665 | | glGenVertexArrays(1, VAO); |
| 666 | | glBindVertexArray(VAO[0]); |
| 667 | | glGenBuffers(1, Buffer); |
| 668 | | glBindBuffer(GL_ARRAY_BUFFER, Buffer[0]); |
| 669 | | glBufferData(GL_ARRAY_BUFFER, vertices*3*sizeof(GLfloat), |
| 670 | | vertex, GL_STATIC_DRAW); |
| 671 | | glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL); |
| 672 | | glEnableVertexAttribArray(0); |
| 673 | | } |
| 674 | | }}} |
| | 652 | 2. Instead of drawing of the teapot in {{{display()}}} we will draw single vertex array object as a point cloud with adding |
| | 653 | {{{ |
| | 654 | #!c |
| | 655 | //glutSolidTeapot(0.6); |
| | 656 | glVertexPointer(3, GL_FLOAT, 0, vertex); |
| | 657 | glEnableClientState(GL_VERTEX_ARRAY); |
| | 658 | glDrawArrays(GL_POINTS, 0, vertices); |
| | 659 | glDisableClientState(GL_VERTEX_ARRAY); |
| | 660 | }}} |
| | 661 | that pushes 132871 vertices (1.5MB) from client memory to GPU on every redraw. Better approach would be to follow VBOs principles by generating vertex buffer in GPU as {{{temperature.c}}} example. |