glColor() und Vertex-Arrays



  • Hallo zusammen,

    wie kann ich die einzelnen Fragmenten eines Vertex-Arrays Farbe zuweisen?
    In das Vertex-Array darf ich ja keine Farbwerte angeben, wie das mit glColor üblich ist.

    Wie macht man das?

    Grüße



  • curry-king schrieb:

    Hallo zusammen,

    wie kann ich die einzelnen Fragmenten eines Vertex-Arrays Farbe zuweisen?
    In das Vertex-Array darf ich ja keine Farbwerte angeben, wie das mit glColor üblich ist.

    Wie macht man das?

    Grüße

    Mit
    http://wiki.delphigl.com/index.php/glColorPointer
    rya.



  • Hallo zusammen,

    ich versuche also jetzt, den Seiten eines Tetraeders verschiedene Farben zuzuweisen, und zwar über glColorPointer().

    Leider verstehe ich die Zuordnung der Farben zu den Seiten meines Tetraeders nicht.

    Folgenden Code habe ich bereits:

    // Vertex-Array fuellen
    		int j = 0;
    		for(int i=0; i<3; i++)
    			m_arrayVertices[j++] = m_x1[i];
    
    		for(int i=0; i<3; i++)
    			m_arrayVertices[j++] = m_x2[i];
    
    		for(int i=0; i<3; i++)
    			m_arrayVertices[j++] = m_x3[i];
    
    		for(int i=0; i<3; i++)
    			m_arrayVertices[j++] = m_x4[i];
    
    		// m_arrayColors Color-Array fuellen
                    /* Für jede Seite des Tetraeders moechte ich eine eigene Farbe definieren*/
    
    		// Index-Array fuellen
    		m_arrayIndices[0] = 0;
    		m_arrayIndices[1] = 1;
    		m_arrayIndices[2] = 2;
    		m_arrayIndices[3] = 2;
    		m_arrayIndices[4] = 3;
    		m_arrayIndices[5] = 3;
    		m_arrayIndices[6] = 1;
    		m_arrayIndices[7] = 1;
    		m_arrayIndices[8] = 3;
    		m_arrayIndices[9] = 2;
    
    		// Anordnen der Vertexdaten		
    		glVertexPointer(3, GL_FLOAT, 0, m_arrayVertices);
    
    		// Anordnen der Colordaten
    		glColorPointer(3, GL_FLOAT, 0,  m_arrayColors);
    

    Wie muß ich die Farben den Vertices zuordnen? Oben im Code habe ich das auskommentiert.



  • Ganz einfach:
    Stell Dir vor du zeichnest den Würfel im DirektModus. Da kommt auch immer eine Farbcall auf ein Vertex, wenn man alle unterschiedlich färbt.
    Sprich pro Vertex brauchst Du ein Farbpunkt. Und nach deren Färbung wird das Endprodukt gefärbt.

    MyVertex color[4];    
        color[2] = MyVertex (0.0f, 1.0f, 0.0);
    
        glColorPointer(3, GL_FLOAT, 0, &color[0]);
    

    Das Beispiel ist für ein Quad. In dem Quad ist jetzt so alles schwarz ( da die Werte die nicht gesetzt sind 0 sind ) aber ein Punkt ist blau gefärbt und damit auch ein Teil des Quads.
    Ich hoffe Du kannst meine Erklärung nachvollziehen.
    rya.


Anmelden zum Antworten