1/27
Convert the previous OpenGL program (Sample Code 1) to use Vertex Buffer Objects
#include __ //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}<GL/glew.h>#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
__(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutInit#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
__(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutInitWindowSize#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
__(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutInitWindowPosition#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
__("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutCreateWindow#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
___(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutDisplayFunc#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
__ = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}GLenum err#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = ___ // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glewInit();#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (___) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}err == GLEW_OK#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
___
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glutMainLoop();#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
___ {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}void triangle()#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
__ trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}GLfloat#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat ___ {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}trianglevertices[] =#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
___
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}GLuint VBOid;#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
__(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glGenBuffers#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
__(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glBindBuffer#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
__(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glBufferData#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
__(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glEnableClientState#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
__(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glVertexPointer#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
__(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glDrawArrays#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
__(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glDisableClientState#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
__(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glBindBuffer#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
__(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glDeleteBuffers#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void ___ {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}display()#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
__(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glClear#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
__(.16f,.72f,.08f,1.0f);
triangle();
glFlush();
}glColor4f#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
___
glFlush();
}triangle();#include <GL/glew.h> //New GLEW header file
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display();
void triangle();
void init();
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,100);
glutCreateWindow("simple");
glutDisplayFunc(display);
GLenum err = glewInit(); // <------- Include glew initialization calls before the main loop
if (err == GLEW_OK) {
glutMainLoop();
}
}
void triangle() {
//1. Initialize the triangle using an array
GLfloat trianglevertices[] = {
0.0f, .75f, 0.0f,
-0.75f, 0.0f, 0.0f,
0.75f, 0.0f, 0.0f
};
//2. Generate a Vertex Buffer Object ID for your array of vertices and bind it
GLuint VBOid;
glGenBuffers(1, &VBOid);
glBindBuffer(GL_ARRAY_BUFFER, VBOid);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*9, trianglevertices, GL_STATIC_DRAW);
//3. Activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//4. Draw the primitive object
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
//5. Disable client side capability for normal operation
glDisableClientState(GL_VERTEX_ARRAY);
// bind with 0, so, switch back to normal pointer operation
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &VBOid);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f,.72f,.08f,1.0f);
triangle();
___
}glFlush();