OPENGL VBO Problem



  • Hallo

    folgendes Problem - ich definiere einen Körper und speichere dessen Daten als VBO
    auf der Graka.
    Eine Funktion Draw_VBO gibt das Teil aus.
    Alles funktioniert solange bis ich einen Schriftzug dazu ausgebe -
    die Farben des VBOs ist plötzlich transparent und runterskaliert.

    Schrift definiert mit wglUseFontOutlines als Displaylisten.
    Farbe der Schift mit glColor.

    Wieso ist die fix definierte Farbe des VBOs mit eine Alphawert von 255
    plötzlich transparent??

    würde mich über Hilfe freuen

    Gruss Peter



  • Du benutzt OpenGL, oder? Ich verstehe deine Problematik nicht ganz, da viele Information oder sogar ein minimales, reproduzierbares Beispiel fehlt.

    Aber: OpenGL ist eine Zustandsmaschine, wenn Du Schriftzüge ausgibst (wie auch immer Du das machst) ändert sich wahrscheinlich ein Zustand in OpenGL, der deinen "Körper" nicht mehr so darstellt, wie Du das möchtest. (Vielleicht wird in deinem Beispiel glBlendFunc umgestellt, o.ä.). Wenn Du durch den ganzen Code nicht durchblickst, lohnst sich u.U. ein Blick auf einen GL-Debugger z.B. http://www.vis.uni-stuttgart.de/glsldevil/ mit dem Du alle Befehle nachvollziehen kannst.

    Viel Glück 😉



  • megaweber schrieb:

    Du benutzt OpenGL, oder? Ich verstehe deine Problematik nicht ganz, da viele Information oder sogar ein minimales, reproduzierbares Beispiel fehlt.

    Aber: OpenGL ist eine Zustandsmaschine, wenn Du Schriftzüge ausgibst (wie auch immer Du das machst) ändert sich wahrscheinlich ein Zustand in OpenGL, der deinen "Körper" nicht mehr so darstellt, wie Du das möchtest. (Vielleicht wird in deinem Beispiel glBlendFunc umgestellt, o.ä.). Wenn Du durch den ganzen Code nicht durchblickst, lohnst sich u.U. ein Blick auf einen GL-Debugger z.B. http://www.vis.uni-stuttgart.de/glsldevil/ mit dem Du alle Befehle nachvollziehen kannst.

    Viel Glück 😉

    Hallo

    danke für den link.
    Ich habe meine Grundkörper als VBOs definiert - die koordianten , Normalen und Farben für jeden Vertex enthalten.
    Die schiebe ich dann auf die Graka, und alle läuft perfekt.

    Jetzt habe ich über wglUseFontOutlines eine Schrift installiert - als Displaylisten und der Aufruf der Displaylisten verändert den OPENGL Status.
    Der ertse Frame wird noch richtig dargestellt, beim zweiten sind die VBOs
    plötzlich transparent.
    Da die Farben und Alphawerte fix in den VBOs definiert sind, dürften die VBOs sich nicht verändern.
    Letztendlich postet man hier, weil man hofft das irgendjemand den gleichen Fehler schon hatte und sagt "schau mal da ".

    extern void Str_3D( Vertex_Struct* pos, char *str, int32_t fnt_ind, RGBA_Struct* col, BOOL cen_flag )		
    {
      float     lg = 0;						       		
      uint32_t  c1;   
    
      if ( str == NULL ) return;            
    
      glPushMatrix();                                       
      if( cen_flag )
      {
        for( c1 = 0; c1 < strlen( str ); c1++ ) lg +=__gmf[ fnt_ind ][ str[ c1 ] ].gmfCellIncX;			           
        glTranslatef( -lg / 2.0f + pos->x, pos->y - 0.35f, pos->z + 0.005f );		                               
      }
      else 
      {
        glTranslatef( pos->x, pos->y - 0.35f, pos->z + 0.005f );		            
      }
    
      glPushAttrib( GL_LIST_BIT );                          
      glColor4ubv( &col->red );                             
      glListBase( __f_base[ fnt_ind ] );                    
      glCallLists( strlen( str ), GL_UNSIGNED_BYTE, str );  
      glPopAttrib();                                        
      glPopMatrix();                                         
    }
    

Log in to reply