1/14
Looks like no tags are added yet.
Allow applications to render primitives from vertex and vertex state data stored in blocks of memory
Vertex Arrays
Processes the vertices and cache the results for efficient reuse
Vertex Arrays
Version 1.5 introduced the __ __ feature, allowing applications to store data in high-performance server memory
Buffer Object
Suffix: b
Data Type: 8-bit integer
Typical Corresponding C-Language Type: signed char
OpenGL Type Definition: GLbyte
Suffix: s
Data Type: 16-bit integer
Typical Corresponding C-Language Type: signed short
OpenGL Type Definition: GLshort
Suffix: i
Data Type: 32-bit integer
Typical Corresponding C-Language Type: int
OpenGL Type Definition: GLint, GLsizei
Suffix: f
Data Type: 32-bit floating-point
Typical Corresponding C-Language Type: float
OpenGL Type Definition: GLfloat, GLclampf
Suffix: d
Data Type: 64-bit floating-point
Typical Corresponding C-Language Type: double
OpenGL Type Definition: GLdouble, GLclampd
Suffix: ub
Data Type: 8-bit unsigned integer
Typical Corresponding C-Language Type: unsigned char
OpenGL Type Definition: GLubyte
Suffix: us
Data Type: 16-bit unsigned integer
Typical Corresponding C-Language Type: unsigned short
OpenGL Type Definition: GLushort
Suffix: ui
Data Type: 32-bit unsigned integer
Typical Corresponding C-Language Type: unsigned int
OpenGL Type Definition: GLuint, GLenum, GLbitfield

#include <iostream>
#include <GL\glut.h>
using namespace std;
void defaultDisplay();
void point();
void triangle();
int main(int argc, char **argv){
glutInit(&argc, argv);
glutInitWindowSize(1024,768);
glutInitWindowPosition(200,50);
glutCreateWindow("My First OpenGL");
glutDisplayFunc(defaultDisplay);
glutMainLoop();
return 0;
}
void triangle(){
glBegin(GL_TRIANGLES);
glVertex2f(0.0f, .75f);
glVertex2f(-0.75f, 0.0f);
glVertex2f(0.75f, 0.0f);
glEnd();
}
void point(){
glPointSize(20.0);
glBegin(GL_POINTS);
glVertex2f(-0.75f, -0.75f);
glVertex2f(-0.75f, 0.75f);
glVertex2f(0.75f, 0.75f);
glVertex2f(0.75f, -0.75f);
glEnd();
}
void defaultDisplay(){
glClear(GL_COLOR_BUFFER_BIT);
glColor4f(.16f, .72f, .08f, 1.0f);
point();
triangle();
glFlush();
}Sample Code: Drawing using glBegin() / glEnd()
Conversion to Vertex Array:
void triangle(){
glBegin(GL_TRIANGLES);
glVertex2f(0.0f, .75f);
glVertex2f(-0.75f, 0.0f);
glVertex2f(0.75f, 0.0f);
glEnd();
}void triangle() {
//1. initialize an array holding vertex coordinates
GLfloat trianglevertex[] = {
0.0f, .75f, 0.0f; /* <---- since we are working with a 2D primitive z axis is always at 0.0 */
-0.75f, 0.0f, 0.0f;
0.75f, 0.0f, 0.0f;
};
//2. activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
//3. specify the pointer to vertex array
glVertexPointer(3, GL_FLOAT, 0, trianglevertex);
//4. execute drawArrays
glDrawArrays(GL_TRIANGLES,0,3);
//5. deactivate vertex array after drawing
glDiasableClientState(GL_VERTEX_ARRAY);
}void point() {
glPointSize(20.0);
GLfloat pointvertex[] = {
-0.75f, -0.75f, 0.0f;
-0.75f, 0.75f, 0.0f;
0.75f, 0.75f, 0.0f;
0.75f, -0.75f, 0.0f;
};
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, pointvertex);
glDrawArrays(GL_POINTS,0,3);
glDiasableClientState(GL_VERTEX_ARRAY);
}Conversion to Vertex Array (GL_POINTS)
Define an array of vertex data
glVertexPointer()