GLut und GLaux



  • Hi,

    habe schon ein bissl angefangen mit GLut unter VC++ zu programmieren. Geht ganz gut.
    Bei http://www.opengl.org/ sehe ich aber immer wieder Beispielprogramme, die GLaux benutzen.

    1. Wo bekomme ich die glaux.lib/.h/.dll her? Ich finde immer nur die glut-Dateien.
    2. Was ist eigentlich der Unterschied zw. glut und glaux? Ist das eine Ergänzung? Habe bis jetzt nur rausgefunden, dass man mit glaux zusätzlich noch Texturen machen kann.

    PS: Kann mir jmd. sagen, was an der folg. Zeile falsch ist (Code ist von nicht von mir; ich kenne mich mit C-Speicherzuweisung nicht aus, habe das nur in C++ mit new gemacht.)

    stack_node *newNode1 = malloc(sizeof(stack_node));
    

    Das struct ist so implementiert:

    typedef struct stack_node {
      int size;
      struct stack_node *next;
    } stack_node;
    


  • Glaux ist alt, und ziemlich buggy. Wird meines Wissens auch nicht mehr weiterentwickelt. Ist aber bei VC6 zumindest als Lib & Header dabei.

    Glut hat aber auch seit einem Jahr oder so kein Update mehr gesehen 😉

    Glut kann einiges mehr. Z.B. Input devices abfragen.



  • Was für eine Fehlermeldung bekommst du bei dem malloc?

    Wenn ich mich recht entsinne, Meckerte der VC bei mir auch immer, bis ich zu dem erstellten Type gecastet habe.



  • Aso, der Fehler:

    ...: error C2440: 'initializing' : cannot convert from 'void *' to 'struct stack_node *'
    

    hm..die doku von glut is noch von 2000...aber glut is trotzdem die meistbenutzte OpenGL-API, oder?
    Andere APIs/Libs sind doch für nicht hochprofessionelle Nutzung zu schwierig.

    Wie kann ich da in GLut Texturen auflegen? Geht das? Habe es bisher nur in GLaux gesehen.



  • Dann caste nach stack_node

    stack_node *newNode1 = (stack_node*)malloc(sizeof(stack_node))
    

    Somit ist das Problem behoben.

    Zu den Libs:
    Die libSDL ist genauso Easy2Use, wenn nicht einfacher. Auf jeden Fall einen Blick wert.

    Zur Init von Texturen:

    Hier ein stück aus dem Testframework von mir, damit kannst du sicher rauslesen, was du brauchst:

    bool CTexture::LoadTexture( char *fileName, GLuint MipMaps )
    {
    	SDL_Surface *src = SDL_LoadBMP( fileName );
    	if( !src )
    		return false;
    
    	// Erstelle TexturID
    	glGenTextures( MipMaps, &ID );
    
    	glBindTexture( GL_TEXTURE_2D, ID );
    
        if( MipMaps )
        {
          glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );
    					   glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST );
    
    	  gluBuild2DMipmaps( GL_TEXTURE_2D, src->format->BytesPerPixel, src->w, src->h,
    						 GL_BGR_EXT, GL_UNSIGNED_BYTE, src->pixels );
        }
        else
        {
          glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    					   glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
    
          glTexImage2D( GL_TEXTURE_2D, 0, src->format->BytesPerPixel, src->w, src->h,
    					0, GL_BGR_EXT, GL_UNSIGNED_BYTE, src->pixels );
        }
    
    	SDL_FreeSurface( src );
    
    	return true;
    }
    

    Ist zwar der Loader SDL, aber der rest ist OpenGL.

    [edit] Sorry - error im code 😉 - ist wohl nicht upgedated gewesen



  • Vielen Dank.
    Ich werde morgen alles mal testen.



  • und falls es dich interresiert
    GLUt = OpenGL Utility Toolkit
    GLAUX -> IpenGL Auxilary Libary


Anmelden zum Antworten