#define GLEW_STATIC
#include <GL/glew.h>
#pragma comment(lib,"glew32s.lib")
#include <GL/glut.h>
#include <stdio.h>
GLuint m_vertexBufferID;
GLuint m_indexBufferID;
void init(void)
{
glewInit();
glClearColor(0.0, 0.0, 1.0, 1.0);
glGenBuffers(1,&m_vertexBufferID);
glGenBuffers(1,&m_indexBufferID);
}
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glLoadIdentity();
glOrtho(-w, w, -h, h, -1.0, 1.0);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//glRotated(180,1,0,0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
//line
{
glBegin(GL_LINES);
glColor4d(1.0, 1.0, 1.0,1.0);
glVertex3d(0,0,0);
glVertex3d(1,1,0);
glEnd();
}
//cube by draw element
glEnable(GL_LIGHTING);
{
GLfloat geom[] =
{
-.5f,-.5f,-.5f, -1.0f,0.0f,0.0f,//0
-.5f,-.5f,-.5f, 0.0f,-1.0f,0.0f,//1
-.5f,-.5f,-.5f, 0.0f,0.0f,-1.0f,//2
.5f,-.5f,-.5f, 1.0f,0.0f,0.0f,//3
.5f,-.5f,-.5f, 0.0f,-1.0f,0.0f,//4
.5f,-.5f,-.5f, 0.0f,0.0f,-1.0f,//5
-.5f,.5f,-.5f, -1.0f,0.0f,0.0f,//6
-.5f,.5f,-.5f, 0.0f,1.0f,0.0f,//7
-.5f,.5f,-.5f, 0.0f,0.0f,-1.0f,//8
.5f,.5f,-.5f, 1.0f,0.0f,0.0f,//9
.5f,.5f,-.5f, 0.0f,1.0f,0.0f,//10
.5f,.5f,-.5f, 0.0f,0.0f,-1.0f,//11
-.5f,-.5f,.5f, -1.0f,0.0f,0.0f,//12
-.5f,-.5f,.5f, 0.0f,-1.0f,0.0f,//13
-.5f,-.5f,.5f, 0.0f,0.0f,1.0f,//14
.5f,-.5f,.5f, 1.0f,0.0f,0.0f,//15
.5f,-.5f,.5f, 0.0f,-1.0f,0.0f,//16
.5f,-.5f,.5f, 0.0f,0.0f,1.0f,//17
-.5f,.5f,.5f, -1.0f,0.0f,0.0f,//18
-.5f,.5f,.5f, 0.0f,1.0f,0.0f,//19
-.5f,.5f,.5f, 0.0f,0.0f,1.0f,//20
.5f,.5f,.5f, 1.0f,0.0f,0.0f,//21
.5f,.5f,.5f, 0.0f,1.0f,0.0f,//22
.5f,.5f,.5f, 0.0f,0.0f,1.0f,//23
};
glBindBuffer(GL_ARRAY_BUFFER,m_vertexBufferID);
int sizeof_geom = sizeof(geom);
glBufferData(GL_ARRAY_BUFFER,sizeof(geom),geom,GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,0);
GLubyte indicies[] =
{
0,6,18,12,
1,4,16,13,
2,5,11,8,
3,9,21,15,
7,10,22,19,
14,17,23,20,
};
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_indexBufferID);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(indicies),indicies,GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_INDEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER,m_vertexBufferID);
const unsigned int sizeof_GLfloat = sizeof(GLfloat);
glVertexPointer(3,GL_FLOAT,sizeof_GLfloat*6,0);
glNormalPointer(GL_FLOAT,sizeof_GLfloat*6,(const GLvoid*)(sizeof_GLfloat*3));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_indexBufferID);
glColor4f(1.0,0.0,0.0,1.0);
glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE,0);
glBindBuffer(GL_ARRAY_BUFFER,0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
glDisableClientState(GL_INDEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
}
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
init();
glutMainLoop();
return 0;
}