12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "draw_floor.h"
- #ifndef IGL_NO_OPENGL
- #include "OpenGL_convenience.h"
- IGL_INLINE void igl::draw_floor(const float * colorA, const float * colorB)
- {
- // old settings
- int old_lighting=0,old_color_material=0;
- glGetIntegerv(GL_LIGHTING,&old_lighting);
- glGetIntegerv(GL_COLOR_MATERIAL,&old_color_material);
- glDisable(GL_LIGHTING);
- glColorMaterial( GL_FRONT, GL_EMISSION);
- glEnable(GL_COLOR_MATERIAL);
- glColorMaterial( GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
- // Set material
- const float black[] = {0.,0.,0.,1.};
- glMaterialfv(GL_FRONT, GL_AMBIENT, black);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, black);
- glMaterialfv(GL_FRONT, GL_SPECULAR, black);
- glMaterialfv(GL_FRONT, GL_EMISSION, black);
- glMaterialf(GL_FRONT, GL_SHININESS,0);
- const bool use_lighting = false;
- if(use_lighting)
- {
- glEnable(GL_LIGHTING);
- }else
- {
- glDisable(GL_LIGHTING);
- }
- int GridSizeX = 100;
- int GridSizeY = 100;
- float SizeX = 0.5f;
- float SizeY = 0.5f;
- glBegin(GL_QUADS);
- glNormal3f(0,1,0);
- for (int x =-GridSizeX/2;x<GridSizeX/2;++x)
- {
- for (int y =-GridSizeY/2;y<GridSizeY/2;++y)
- {
- if ((x+y)&0x00000001) //modulo 2
- {
- glColor4fv(colorA);
- }else
- {
- glColor4fv(colorB);
- }
- glVertex3f( x*SizeX,0,(y+1)*SizeY);
- glVertex3f((x+1)*SizeX,0,(y+1)*SizeY);
- glVertex3f((x+1)*SizeX,0, y*SizeY);
- glVertex3f( x*SizeX,0, y*SizeY);
- }
- }
- glEnd();
- (old_lighting ? glEnable(GL_LIGHTING) : glDisable(GL_LIGHTING));
- (old_color_material? glEnable(GL_COLOR_MATERIAL) : glDisable(GL_COLOR_MATERIAL));
- }
- IGL_INLINE void igl::draw_floor()
- {
- const float grey[] = {0.80,0.80,0.80,1.};
- const float white[] = {0.95,0.95,0.95,1.};
- igl::draw_floor(grey,white);
- }
- #endif
|