Erklärung eines kleinen Codebeispiels...



  • DerAnfänger2005 schrieb:

    AJ schrieb:

    Du kannst es aber auch mit int * color probieren. Wäre auf jeden Fall weniger Speicherintensiv (wobei das bei 3 Elementen noch relativ egal ist).

    Hmmm...eigentlich könnte das funktionieren... Man kann halt nur nicht so konfortabel auf die Elemente zugreifen...

    Sicher? 😃

    Probiers hald mal aus:

    ...
    int arr[3] = { 1, 3, 5 };
    int * ptr = arr;
    
    printf("%i = %i", arr[1], ptr[1]); // oder cout << arr[1] << " = " << ptr[1];
    ...
    

    DerAnfänger2005 schrieb:

    Ich sollte vielleicht noch erwähnen, dass das Color beschaffen relativ zeitkritisch ist.

    Wenn ich 100 OpenGL Objekte habe und für jedes die Farbe hohlen muss, wärs schon schön, wenns flott ginge. Wie schnell ist den memcpy in dieser Hinsicht?

    Wenn es zeitkritisch ist, dann solltest du so wenig wie möglich kopieren. memcpy() dürfte eine der schnellsten Varianten sein etwas von einem Speicherbereich zum anderen zu kopieren.



  • Habs ausprobiert und geht wie ich es mir vorgestellt habe.

    Danke! Du hast mir sehr geholfen. 👍



  • So...ich hab nochmal ne Frage:

    Ich bekomme ja jetzt den Pointer auf mein Feld. Jetzt möchte ich gerne Daten auslesen, aber irgendwie scheiter ich da:

    (Sender->getColor())[0] == 0.7)
    

    und

    Sender->getColor()[0] == 0.7)
    

    scheinen beide nicht richtig zu sein.

    Wie gehts richtig?



  • Könnte einer von euch mein Flehen erhören und eine Lösung sagen? Ich steh immer noch aufm schlauch...



  • Ich hab das

    GLflaot color[3];
    
    GLfloat* getColor() {return (GLfloat*)color;};
    

    Mit

    ( (GLfloat)Sender->getColor() )[0] == 0.7
    

    bekomme ich

    error: ISO C++ forbids casting to an array type 'GLfloat[]'
    

    Och menno...ich will doch nur testen, ob der x-te Wert im Feld gleich irgendwas ist...


Anmelden zum Antworten