初学者,不知道怎么用OpenGL将位图贴到球体上还不影响球体转动,就像地球仪一样,希望大侠指点,最好能有源代码和注释~~~额~~要用C语言写的~~

解决方案 »

  1.   

    看看这个
    http://download.csdn.net/detail/waitformyfriends/3721978
      

  2.   

    #undef UNICODE
    #include <windows.h> 
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glaux.h>
    #include <GL/glut.h>
     
    void myinit(void);
    void makeStripeImage(void);
    void CALLBACK display(void);
    void CALLBACK myReshape(GLsizei w, GLsizei h);
     
    #define stripeImageWidth 64
    GLubyte stripeImage[3*stripeImageWidth];
     
    void makeStripeImage(void)
    {
      int j;
     
      for (j = 0; j < stripeImageWidth; j++)
      {
        stripeImage[3*j] = 255;
        stripeImage[3*j+1] =255-2*j;
        stripeImage[3*j+2] =255;
      }
    }
      
    GLfloat sgenparams[] = {1.0, 1.0, 1.0, 0.0};
     
    void myinit(void)
    {
      glClearColor (0.0, 0.0, 0.0, 0.0);
     
      makeStripeImage();
      glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
      glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
      glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
      glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
      glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexImage1D(GL_TEXTURE_1D, 0, 3, stripeImageWidth, 0, GL_RGB, GL_UNSIGNED_BYTE, stripeImage);
     
      glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
      glTexGenfv(GL_S, GL_OBJECT_PLANE, sgenparams);
     
      glEnable(GL_DEPTH_TEST);
      glDepthFunc(GL_LESS);
      glEnable(GL_TEXTURE_GEN_S);
      glEnable(GL_TEXTURE_1D);
      glEnable(GL_CULL_FACE);
      glEnable(GL_LIGHTING);
      glEnable(GL_LIGHT0);
      glEnable(GL_AUTO_NORMAL);
      glEnable(GL_NORMALIZE);
      glFrontFace(GL_CW);
      glCullFace(GL_BACK);
      glMaterialf (GL_FRONT, GL_SHININESS, 64.0);
    }
     
    void CALLBACK display(void)
    {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glPushMatrix ();
      glRotatef(25.0, 1.0, 0.0, 0.0);
      auxSolidTeapot(1.5);
      glPopMatrix ();
      glFlush();
    }
     
    void CALLBACK myReshape(GLsizei w, GLsizei h)
    {
      float a=3.5;
     
      glViewport(0, 0, w, h);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      if (w <= h)
        glOrtho (-a, a, -a*(GLfloat)h/(GLfloat)w, a*(GLfloat)h/(GLfloat)w, -a, a);
      else
        glOrtho (-a*(GLfloat)w/(GLfloat)h, a*(GLfloat)w/(GLfloat)h, -a, a, -a, a);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
    }
     
    void main(void)
    {
      auxInitDisplayMode (AUX_SINGLE | AUX_RGBA);
      auxInitPosition (0, 0, 500, 500);
       auxInitWindow ("Teapot TextureMapping");
      myinit();
      auxReshapeFunc (myReshape);
      auxMainLoop(display);
    }
      

  3.   

    这个显示无法编译,找不到exe文件
      

  4.   

    加上#pragma   comment(lib, "openGL32.lib")
    #pragma   comment(lib, "glu32.lib")
    #pragma   comment(lib, "glaux.lib") 
    编译应该没问题了