OpenGl GluDisk, Textur ausrichten



  • Hallo,
    Ich erzeuge mit gludisk einige platten die im kreis angeordnet sind. diese werden jeweils mit texturen überzogen. so weit so gut. die platten sind quadratisch 256x256. die texturen werden aus bmp geladen und sind ebenfalls 256x256.

    leider bekomme ich die texturen nicht auf die platten ausgerichtet, sie liegen schräg drauf. das ganze soll ein cd-cover vorschau werden ala itunes.

    habe in verschiedenen tutorials folgenden code gefunden:

    [cpp]
    glBegin( GL_QUADS );
    glTexCoord2d(0.0,0.0); glVertex2d(0.0,0.0);
    glTexCoord2d(1.0,0.0); glVertex2d(1.0,0.0);
    glTexCoord2d(1.0,1.0); glVertex2d(1.0,1.0);
    glTexCoord2d(0.0,1.0); glVertex2d(0.0,1.0);
    glEnd();[/cpp]
    

    bekomme ihn jedoch nicht zum laufen

    hier ein auschnitt aus meinem code, danke schon mal für eure hilfe !!

    [cpp]
        int PixelFormat;
        GLuint startoflist;
        GLfloat x, y, xstep, ystep, w, h;
        GLsizei size;
        GLuint texture[21];
        GLUquadricObj* Cover[COVERCOUNT];
        GLUquadricObj *Ring;
        Graphics::TBitmap* bitmap;
    
    void __fastcall TForm1::DrawObjects()
    {
    
    for (int i = 0; i <= COVERCOUNT; i++)
      {
      glBindTexture(GL_TEXTURE_2D, texture[i]);
      //an dieser stelle sollten die texturen ausgerichtet werden aber wie ????
      glPushMatrix();
      glDisable(GL_CULL_FACE);
      glColor3f(0.8f, 0.8f, 0.8f);
      glRotatef(40*i, 0.0, 1.0, 0.0);
      glTranslatef(0.0f, 0.0f, 40.0f);
    
      glRotatef(45, 0.0, 0.0, 1.0);
      glCallList(startoflist);
      glEnable(GL_CULL_FACE);
      glPopMatrix();
      }
    }
    
    void __fastcall TForm1::DrawGoldCube()
    {
    for (int i=0;i<=COVERCOUNT;i++)
      {
      Cover[i] =  gluNewQuadric();
      gluQuadricTexture(Cover[i], GL_TRUE);
      gluQuadricDrawStyle(Cover[i], GLU_FILL);
      gluQuadricNormals(Cover[i], GLU_SMOOTH);
      glNewList(startoflist+i, GL_COMPILE);
      gluDisk(Cover[i], 0, 15, 4, 1);
      glEndList();
      }
    }
    
    void __fastcall TForm1::SetupTextures()
    {
    bitmap = new Graphics::TBitmap;
    GLubyte bits[256 ][256 ][4];
    for (int x = 0;x <= 20;x++)
      {
      bitmap->LoadFromFile(IntToStr(x)+".bmp");
      for(int i = 0; i < 256 ; i++)
       {
       for(int j = 0; j < 256 ; j++)
         {
         bits[i][j][0]= (GLbyte)GetRValue(bitmap->Canvas->Pixels[i][j]);
         bits[i][j][1]= (GLbyte)GetGValue(bitmap->Canvas->Pixels[i][j]);
         bits[i][j][2]= (GLbyte)GetBValue(bitmap->Canvas->Pixels[i][j]);
         bits[i][j][3]= (GLbyte)255;
         }
       }
      glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
      glGenTextures(1, &texture[x]);
      glBindTexture(GL_TEXTURE_2D, texture[x]);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
      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, 256 , 256 , 0, GL_RGBA, GL_UNSIGNED_BYTE, bits);
      glEnable(GL_TEXTURE_2D);
      glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
      }
    }
    [/cpp]
    


  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten