Bunte Quads



  • Abend,

    ich moechte in OpenGL 10 Quads in einer bestimmten Farbe zeichnen. Das Problem ist nur, dass meine Farbe einfach ignoriert wird. Die Quads sind immer weiss.

    Hier auszugsweise der relevante Code (hab ihn etwas vereinfacht):

    m_posData  = new Vec3[10*4]; // Jedes Quad hat 4 Vertices
    m_diffData = new Vec4[10*4];
    Vec4 color = Vec4(0.1f, 0.9f, 0.7f, 0.8f);
    for(int i = 0; i < 10; i++) {	
       int startIndex = i*4;
       m_diffData[startIndex]   = color ;
       m_diffData[startIndex+1] = color ;
       m_diffData[startIndex+2] = color ;
       m_diffData[startIndex+3] = color ;
    }
    
    // VBOs erzeugen
    glGenBuffers(1, &vboPos);
    glBindBuffer(GL_ARRAY_BUFFER, vboPos);
    glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), NULL, GL_STREAM_DRAW);
    
    glGenBuffers(1, &vboDiff);
    glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
    glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), NULL, GL_STREAM_DRAW);
    
    // ... in jedem Frame werden die Positionen und Farben veraendert
    
    Rendern:
    glEnableClientState(GL_VERTEX_ARRAY);
    glBindBuffer(GL_ARRAY_BUFFER, vboPos);
    glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), m_posData, GL_STREAM_DRAW);
    
    glEnableClientState(GL_COLOR_ARRAY);
    glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
    glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), m_diffData, GL_STREAM_DRAW);
    
    glBindBuffer(GL_ARRAY_BUFFER, vboPos);
    glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*)0);
    
    glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
    glColorPointer(4, GL_FLOAT, 0, (const GLvoid*)0);
    glDrawArrays(GL_QUADS, 0, 10 * 4);
    

    In jedem Frame editiere ich die Positionen (Arraz m_posData) und die Farben (m_diffData). Vorm rendern kopiere ich die Daten dann in die VBOs und render sie. Die Farben sind 4 floats.
    In diesem Beispiel will ich z.B. gruene Quads rendern, aber alle Quads sind immer weiss. Lighting ist uebrigens OFF.
    Wieso sind alle meine Quads weiss? Muss ich noch was machen um floats als Farbe verwenden zu koennen?

    Danke!



  • Renderst du mit oder ohne Shader?


Anmelden zum Antworten