Ich möchte ein 2D-Array als Parameter übergeben. Das Problem ist, dass die Größe des 2d-Arrays immer variiert. Also kann ich nicht so etwas wie meine Funktion schreiben (int a [2] [5]);C - Wie man ein variables 2d Array als Parameter übergibt
Ich habe eine Header-Datei mit vielen 3D-Koordinaten. z.B .:
float someArray[][3] = {{0.0,1.0,-2.0},{-1.0,1.0,-2.0},{-1.0,1.0,0.0},{0.0,1.0,0.0},
{-1.0,0.75,-2.0},{-1.0,1.0,-2.0},{-1.0,1.0,0.0},{-1.0,0.75,0.0},
{0.0,0.75,-2.0},{0.0,1.0,-2.0},{0.0,1.0,0.0},{0.0,0.75,0.0},
{0.0,0.75,-2.0},{-1.0,0.75,-2.0},{-1.0,0.75,0.0},{0.0,0.75,0.0},
{0.0,0.75,-2.0},{-1.0,0.75,-2.0},{-1.0,1.0,-2.0},{0.0,1.0,-2.0},
};
void drawVertex(const float **vertex, int numberVertex, int shape)
{
int i;
glPushMatrix();
switch(shape)
{
case 0: glBegin(GL_LINES); break;
case 1: glBegin(GL_POLYGON); break;
default: break;
}
for(i=0;i<numberVertex;i++)
{
glVertex3fv(vertex[i]);
}
glEnd();
glPopMatrix();
}
ruft die Funktion Ich habe versucht:
diese nur zum Absturz bringen (Core Dump)
drawVertex(someArray, 6,1);
drawVertex(*someArray, 6,1);
Soll ich die Parameter der Funktion drawVertex ändern()? Ich habe viele Dinge ausprobiert, aber nichts scheint Arbeit zu sein.
'const GLfloat **' ist kein 2D-Array und kann keines repräsentieren. Verwenden Sie die normale Array-Notation oder einen expliziten Zeiger auf das Array (aufgrund der automatischen Konvertierung der Formatparameter sind sie identisch). – Olaf
Und nachdem Sie @ Olaf's Vorschlag gemacht haben, können Sie es nicht global machen? –
Compiler Warnungen sind nicht nur um einige ausgefallene Nachrichten anzuzeigen. Ignoriere sie nicht und es wird erwartet, dass du sie aktivieren und ihnen Beachtung schenken kannst, bevor du fragst. – Olaf