Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » Glut Objekte verschieben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.06.2008, 20:13 Uhr
~Alex__
Gast


Hallo zusammen,

ich habe mehrere Objekte gezeichnet und instanziiert. Diese befinden sich im Vektor "myVec". Nun will ich diese Objekte in der display Methode zeichnen. Die sollen nebeneinander gezeichnet werden. Ich habe es so versucht:


C++:
  
vector<IconDrawer*> myVec;

float n = -2.5f;

  for(int i=0; i<myVec.size();i++) {
        glTranslatef(n ,0.0f, 0.0f);
        myVec.at(i)->draw();
        n += 0.1f;
  }


IconDrawer.cpp:


C++:
IconDrawer::IconDrawer(char* i) {
    type = i;
}


char* IconDrawer::getType() {
    return type;
}


void IconDrawer::draw() {

    if(type == "FILE"){
        glRotatef(_rtri, 1.0f,0.0f,0.0f);                

        glColor3f(0.5f,0.5f,1.0f); // Setzt die Farbe auf Blau  
    
        glBegin(GL_QUADS); // Fange an Quadrate zu zeichnen  
            glVertex3f(-0.1f, 0.1f, -0.0f); // links und eine Einheit nach oben (oben links)  
            glVertex3f( 0.1f, 0.1f, -0.0f); // rechts und eine Einheit nach oben (oben rechts)  
            glVertex3f( 0.1f,-0.1f, -0.0f); // rechts und eine Einheit runter (unten rechts)  
            glVertex3f(-0.1f,-0.1f, -0.0f); // links und eine Einheit nach unten (unten links)  
        glEnd();
    }

    if(type == "DIRECTORY"){
        glRotatef(_rtri, 1.0f,0.0f,0.0f);                

        glColor3f(1.0f,0.0f,0.0f);
    
        glBegin(GL_QUADS); // Fange an Quadrate zu zeichnen  
            glVertex3f(-0.1f, 0.1f, -0.0f); // links und eine Einheit nach oben (oben links)  
            glVertex3f( 0.1f, 0.1f, -0.0f); // rechts und eine Einheit nach oben (oben rechts)  
            glVertex3f( 0.1f,-0.1f, -0.0f); // rechts und eine Einheit runter (unten rechts)  
            glVertex3f(-0.1f,-0.1f, -0.0f); // links und eine Einheit nach unten (unten links)  
        glEnd();
    }

}



Jedoch sehe ich nur 2 Icons, obwohl in der Liste viel mehr stehen. Woran liegt es?

gruß
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.06.2008, 13:45 Uhr
stephanw
localhorst


Hallo Alex,

ich weiß nicht, ob genau DAS Dein Problem löst, aber Du hast da einen Fehler unabhängig von OpenGL:


C++:
void IconDrawer::draw() {

    if(type == "FILE"){

  ...


Du vergleichst hier den Zeiger type (Zeiger auf char) mit einem Zeiger auf die Zeichenkettte "FILE", die Dir der Compiler irgendwo hinlegt. Falls diese beiden Zeiger gleich sind, würde das an ein Wunder grenzen.
Wenn Du die Zeichenketten vergleichen willst, musst Du das auch tun, z.B. so hier:


C++:
#include <string>

IconDrawer::IconDrawer(std::string type)
{
  type_ = type;
}


void IconDrawer::draw() {

    if(type_ == "FILE") {  // std::string::operator==(const char*) , und dieser vergleicht die komplette Zeichenkette
  ...


--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: