[OGL]veränderung von in arrays gespeicherten triangles



  • hi,
    ich bin noch ein blutiger anfänger was opengl betrifft, deshalb wollte ich mal folgendes fragen:
    ich speichere alle triangles die ich zeichnen will in einem array (von mir aus auch in ner verketteten liste, kommts gleiche bei raus) und zeige das ganze dann schlussendlich in ner schleife an.
    wenn ich nun aber bewegte objekte drinnen habe, verändern sich ja die daten der einzelnen dreiecke.
    wie macht man das nun am besten, baut man die liste jedes frame neu auf oder durchsucht man nach dem entsprechendem dreick die liste und ändert die daten? (und welche suchkriterien sind es dann? falls mal zwei dreicke die gleichen daten haben (gut, sollte nicht sein, aber kann sein) könnte ja das falsche bewegt werden). oder macht man das eigentlich auf ne total andere art und weise?
    danke im voraus
    mfg
    Black Sting



  • Normalerweise macht man das so:
    man hat alle Triangles die logisch zusammengehören (ein Model) in einem
    Array. Das Zentrum des Models sollte bei (0,0,0) liegen.

    Wenn man das Model jetzt an der Stelle (20,-3,5) rendern möchte machts du das
    so:

    glTranslatef(20,-3,5);
    [RenderingBefehle für das Mdl]

    Sehr gute Einsteigertutorials gibts auf:
    nehe.gamedev.net

    @TGGC: DX hat auch Matrizen 😮 wußte gar net das die mittlerweile
    featuretechnisch so weit aufgeholt haben.
    Schätze in Dx 10 können wir mit Alphablending rechnen oder?



  • Kane schrieb:

    @TGGC: DX hat auch Matrizen 😮 wußte gar net das die mittlerweile
    featuretechnisch so weit aufgeholt haben.
    Schätze in Dx 10 können wir mit Alphablending rechnen oder?

    [ironiesynapsen="off"]ne da irrst du dich, alphablending gibts schon seit vielen Jahren :)[ironiesynapsen="on"]



  • TGGC schrieb:

    Bei DX geht das ganz einfach mit Transformationsmatrizen! Steig um!

    Bye, TGGC \-/

    Wo ist das Problem? Könnte ja ein Linuxcoder sein 😉 Nebenbei: OpenGL kann auch Matrizen und nicht nur die Bracke glRotatef und glTranslatef Funktionen. 😉

    class CMatrix
    {
    public:
    	float	_11, _12, _13, _14;
    	float	_21, _22, _23, _24;
    	float	_31, _32, _33, _34;
    	float	_41, _42, _43, _44;
    
    	CMatrix	(void);
    	CMatrix (const float (&value)[16]);
    
    	void	identity (void);
    	void	createPerspective (float fov, float aspect, float fnear, float ffar);
          // [...]
    };
    
    // [...]
    
    CMatrix g_ProjectionMatrix;
    
    g_Matrix._33 = irgendein wert;
    
    // Matrix auswählen und neue Matrix setzen 
    // IDirect3DDevice::SetTransform();
    glMatrixMode (GL_PROJECTION);
    glMatrixMulti (reinterpret_cast<float*>(&g_ProjectionMatrix));
    
    // und abfragen einer Matrix ist genau so easy:
    // IDirect3DDevice::GetTransform();
    glGetFloatv (GL_PROJECTION_MATRIX, reinterpret_cast<float*>(&g_ProjectionMatrix));
    

    Ist doch das selbe wie in DX, man kanns noch fein Kapseln alá COM. Wenn es D3DX nicht gäbe müsste man sich die Funktionen auch in D3D coden, nebenbei: Selber gecodet ist oft am besten (exe wird schön kleiner).

    Also Umstieg ist hier totaler Unsinn, bist ja in dieser Hinsicht schlimmer als ein LinuxFlamer der andauernd sagt: "Boah linux is the best, scheiss Billy Boy!" 😃



  • OpenGL kann auch Matrizen und nicht nur die Bracke glRotatef und glTranslatef Funktionen.

    Ich wollte nicht gleich mit der Tür ins Haus fallen 😃



  • Kane schrieb:

    OpenGL kann auch Matrizen und nicht nur die Bracke glRotatef und glTranslatef Funktionen.

    Ich wollte nicht gleich mit der Tür ins Haus fallen 😃

    Wieso, wenn die Tür rausfallen kann? 😉



  • ok, danke euch, das mit dem translatef wusste ich, wusste nur nicht wie genau man jetzt üblicherweise die einzelnen polydaten sichert, aber jetzt isses ja klar, danke sehr :).
    und dx...ich hab lange rumgeknobelt was von beidem ich lernen soll und hab mich erstmal für opengl entschieden..von daher is ein umstieg unsinn ;).
    mfg
    BLack Sting


Anmelden zum Antworten