OpenGL Texture

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>

/*  Create checkerboard texture  */
#define checkImageWidth 64
#define checkImageHeight 64
static GLubyte checkImage[checkImageHeight][checkImageWidth][4];

static GLuint texName;
GLfloat _angle=45;
void makeCheckImage(void)
{
   int i, j, c;
   for (i = 0; i < checkImageHeight; i++) {
      for (j = 0; j < checkImageWidth; j++) {
         //c = ((((i&0x8)==0)^((j&0x8))==0))*255; //checks
        // c=((((i&0X15)==0)^((j&0x15))==0))*120;//border
        //c=((((i&0X2)==0)^((j&0x2))==0))*200; //more checks
         c=((((i&0x22)==0)^((j&0x22))==0))*200; //flag
         checkImage[i][j][0] = (GLubyte) c;
         checkImage[i][j][1] = (GLubyte) c;
         checkImage[i][j][2] = (GLubyte) c;
         checkImage[i][j][3] = (GLubyte) 200;
      }
   }
}

void init(void)
{
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel(GL_FLAT);
   glEnable(GL_DEPTH_TEST);

   makeCheckImage();
   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

   glGenTextures(1, &texName);
   glBindTexture(GL_TEXTURE_2D, texName);

   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
                   GL_NEAREST);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
                   GL_NEAREST);
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth,
                checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE,
                checkImage);
}

void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glEnable(GL_TEXTURE_2D);
   glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
   glBindTexture(GL_TEXTURE_2D, texName);
   glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.0f);
glRotatef(_angle, 1.0f,0.0f, 0.0f);
  glBegin(GL_QUADS);
    glColor3f(0.0f, 1.0f, 0.0f);     // Green
    glTexCoord2f(0.0, 0.0);glVertex3f( 1.0f, 1.0f, -1.0f);
     glTexCoord2f(0.0, 1.0); glVertex3f(-1.0f, 1.0f, -1.0f);
      glTexCoord2f(1.0, 1.0);glVertex3f(-1.0f, 1.0f,  1.0f);
      glTexCoord2f(1.0, 0.0);glVertex3f( 1.0f, 1.0f,  1.0f);

     glColor3f(1.0f, 1.0f, 0.0f);     // Yellow
     glTexCoord2f(0.0, 0.0); glVertex3f( 1.0f, -1.0f,  1.0f);
     glTexCoord2f(0.0, 1.0); glVertex3f(-1.0f, -1.0f,  1.0f);
     glTexCoord2f(1.0, 1.0); glVertex3f(-1.0f, -1.0f, -1.0f);
     glTexCoord2f(1.0, 0.0); glVertex3f( 1.0f, -1.0f, -1.0f);

      // Front face  (z = 1.0f)
      glColor3f(1.0f, 0.0f, 0.0f);     // Red
      glTexCoord2f(0.0, 0.0);glVertex3f( 1.0f,  1.0f, 1.0f);
      glTexCoord2f(0.0, 1.0);glVertex3f(-1.0f,  1.0f, 1.0f);
      glTexCoord2f(1.0, 1.0);glVertex3f(-1.0f, -1.0f, 1.0f);
      glTexCoord2f(1.0, 0.0);glVertex3f( 1.0f, -1.0f, 1.0f);

      // Back face (z = -1.0f)
      glColor3f(1.0f, 1.0f, 1.0f);     // Yellow
      glTexCoord2f(0.0, 0.0);glVertex3f( 1.0f, -1.0f, -1.0f);
      glTexCoord2f(0.0, 1.0);glVertex3f(-1.0f, -1.0f, -1.0f);
      glTexCoord2f(1.0, 1.0);glVertex3f(-1.0f,  1.0f, -1.0f);
      glTexCoord2f(1.0, 0.0);glVertex3f( 1.0f,  1.0f, -1.0f);

      // Left face (x = -1.0f)
      glColor3f(0.0f, 0.0f, 1.0f);     // Blue
      glTexCoord2f(0.0, 0.0);glVertex3f(-1.0f,  1.0f,  1.0f);
      glTexCoord2f(0.0, 1.0);glVertex3f(-1.0f,  1.0f, -1.0f);
      glTexCoord2f(1.0, 1.0);glVertex3f(-1.0f, -1.0f, -1.0f);
      glTexCoord2f(1.0, 0.0);glVertex3f(-1.0f, -1.0f,  1.0f);

      // Right face (x = 1.0f)
      glColor3f(1.0f, 0.0f, 1.0f);     // Magenta
      glTexCoord2f(0.0, 0.0);glVertex3f(1.0f,  1.0f, -1.0f);
      glTexCoord2f(0.0, 1.0);glVertex3f(1.0f,  1.0f,  1.0f);
      glTexCoord2f(1.0, 1.0);glVertex3f(1.0f, -1.0f,  1.0f);
     glTexCoord2f(1.0, 0.0); glVertex3f(1.0f, -1.0f, -1.0f);

  glEnd();
   glFlush();
   glDisable(GL_TEXTURE_2D);
}

void reshape(int w, int h)
{
   glViewport(0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 30.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glTranslatef(0.0, 0.0, -3.6);
}

void update(int value) {
_angle += 1.5f;
if (_angle > 360) {
_angle -= 360;
}
glutPostRedisplay();
glutTimerFunc(25, update,0);
}

int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize(250, 250);
   glutInitWindowPosition(100, 100);
   glutCreateWindow(argv[0]);
   init();
   glutDisplayFunc(display);
   glutReshapeFunc(reshape);
   glutTimerFunc(25, update, 0);
   glutMainLoop();
   return 0;
}

Comments

  1. Tinti Titanium Metal | Tinti Titanium Art
    Tinti Titanium Art. Tinti Titanium Art, titanium white dominus Tinti. titanium mens wedding bands Titanium Art. Tinti Titanium Art. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. black titanium Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. 2019 ford edge titanium for sale Tinti. Tinti. Tinti. titanium gr 5 Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti. Tinti.

    ReplyDelete

Post a Comment

Popular posts from this blog

OPENGL COLOR CODES

Draw Circle in OpenGL