glReadPixels GL_DEPTH_COMPONENT und Farbe

Wie man die Tiefe und die Farbe Informationen aus jeder OpenGL? Ich möchte zum speichern einer Tiefe Bild und ein Farbbild auf der Festplatte. Was ich versucht habe ist Folgendes:

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);

glBegin(GL_POINTS);
    glColor3f(1.0f,1.0f,1.0f); 
    for(int i=0; i<mesh->vertices.size();i++) {

        if(! mesh->colors.empty()) {
            glColor3f(mesh->colors[i][0],mesh->colors[i][1],mesh->colors[i][2]); 
        }   

        float x= mesh->vertices[i][0];
        float y= mesh->vertices[i][1];
        float z = mesh->vertices[i][2];         
        glVertex3f(x, y, z);

    }

glEnd();

glFlush();
glFinish();

int width = 1280;
int height = 960;

GLfloat* depths;
depths = new GLfloat[ width * height ];

GLfloat * color;
color = new GLfloat[width * height];

glReadPixels (0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, depths); 
glReadPixels (0, 0, width, height, GL_BLUE, GL_FLOAT, color);

Aber wie es aussieht nur die tiefen-array gefüllt ist?

  • Haben Ihre "Masche" vertex-Farben haben blau in Ihnen?
  • Ja, tun Sie..! Aber immer noch das gleiche problem.. so probiert: IplImage* toSave = cvCreateImage(cvSize((int)width,(int)Höhe), IPL_DEPTH_32F, 3); glReadPixels( 0, 0, (int)Breite, (int)Höhe, GL_BGR, GL_FLOAT, toSave->imageData ); toSave->origin = 1; cvSaveImage("test.png", toSave);
  • Wenn ich das gleiche innerhalb der qglviewer, seine Arbeit.. aber ich weiß nicht, warum..
InformationsquelleAutor Ben | 2010-12-06
Schreibe einen Kommentar