GeirGrusom Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 nVidia har ihvertfall egne extensions laget for å rendre video i OpenGL (GL_NV_present_video) Jeg har derimot ikke sett på dem overhode, men for å bruke det må du uansett ha litt forståelse for OpenGL. Jeg tror nok de kan brukes, og støtter garantert de vanlige videoformatene. Lenke til kommentar
TheMaister Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 Hmm... Begynner å se på texture-mapping i GL, men alle eksemplene jeg skjønner er skrevet i GLUT, og glut ser ut til å være veldig callback-basert, noe som passer meg dårlig. Er det mulig å bare bruke glut til å åpne et fiks ferdig vindu (vet du har slitt mye med GLX fått det til?), og bruke GL "synkront" der jeg selv flusher til skjermen? Lenke til kommentar
GeirGrusom Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 (endret) Jeg bruker selv ikke GLUT, og det ser ut til at du må bruke callback funksjonaliteten. Det finnes derimot alternativer til GLUT, som for eksempel GLFW. Her er en mer komplett liste:http://www.opengl.org/resources/libraries/windowtoolkits/ Jeg bruker ingen av delene fordi Glorg skal kunne kjøre under Any CPU, og jeg må derfor enten finne et .NET/Mono bibliotek for OpenGL Window opplegg, eller skrive det selv. Foreløpig har jeg skrevet det selv, men glX er dårlig dokumentert i forhold til wgl som det finnes tusenvis av tutrials til. Dessuten vet jeg mer eller mindre ingenting om X programmering, og det virker til at jeg er langt ifra alene om det. ^^ edit: hmmm jeg tror jeg fant på en måte å kunne dynamisk lenke 32-bit eller 64-bit så jeg kan bruke et window API istedet for å slite med dette selv... Endret 18. mai 2010 av GeirGrusom Lenke til kommentar
TheMaister Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 (endret) Rein Xlib er noe man helst ikke bør drive med :') Svart magi. At glX er dårlig dokumentert hjelper heller ikke :\ Litt synd egentlig. GLFW ser derimot veldig lovende ut. EDIT: VELDIG lovende. Dette ser ut til å være akkurat det jeg har lett etter. Endret 18. mai 2010 av TheMaister Lenke til kommentar
Tapped Skrevet 20. mai 2010 Forfatter Del Skrevet 20. mai 2010 Rein Xlib er noe man helst ikke bør drive med :') Svart magi. At glX er dårlig dokumentert hjelper heller ikke :\ Litt synd egentlig. GLFW ser derimot veldig lovende ut. EDIT: VELDIG lovende. Dette ser ut til å være akkurat det jeg har lett etter. Xlib er ikke så dårlig dokumentert. Jeg fikk opp OpenGL på under en time med Xlib. Du kan følge denne tutorialen her http://www.opengl.org/wiki/Programming_OpenGL_in_Linux:_GLX_and_Xlib, men hvis du ikke gidder å lære deg Xlib så kan du bruke SDL som kan ta imot input og vise bilder i mange formater. Den støtter også lydfiler og nettverkprogrammering. -Tapped Lenke til kommentar
LostOblivion Skrevet 24. mai 2010 Del Skrevet 24. mai 2010 Er det noen som har fungerende kode i C++ for en matrix inverse av en 4x4 homogen matrise? Den koden under ser ikke ut til å gjøre noe som helst med matrisene mine... float Mat4::determinant() const { return m_m14 * m_m23 * m_m32 * m_m41 - m_m13 * m_m24 * m_m32 * m_m41 - m_m14 * m_m22 * m_m33 * m_m41 + m_m12 * m_m24 * m_m33 * m_m41 + m_m13 * m_m22 * m_m34 * m_m41 - m_m12 * m_m23 * m_m34 * m_m41 - m_m14 * m_m23 * m_m31 * m_m42 + m_m13 * m_m24 * m_m31 * m_m42 + m_m14 * m_m21 * m_m33 * m_m42 - m_m11 * m_m24 * m_m33 * m_m42 - m_m13 * m_m21 * m_m34 * m_m42 + m_m11 * m_m23 * m_m34 * m_m42 + m_m14 * m_m22 * m_m31 * m_m43 - m_m12 * m_m24 * m_m31 * m_m43 - m_m14 * m_m21 * m_m32 * m_m43 + m_m11 * m_m24 * m_m32 * m_m43 + m_m12 * m_m21 * m_m34 * m_m43 - m_m11 * m_m22 * m_m34 * m_m43 - m_m13 * m_m22 * m_m31 * m_m44 + m_m12 * m_m23 * m_m31 * m_m44 + m_m13 * m_m21 * m_m32 * m_m44 - m_m11 * m_m23 * m_m32 * m_m44 - m_m12 * m_m21 * m_m33 * m_m44 + m_m11 * m_m22 * m_m33 * m_m44; } Mat4 Mat4::inverse() const { float det = determinant(); if (det == 0) throw std::runtime_error("Attempt to invert degenerate matrix."); return *this * (1 / det); // Returnerer denne matrisen multiplisert med en skalar invers determinant. } Lenke til kommentar
NevroMance Skrevet 24. mai 2010 Del Skrevet 24. mai 2010 Har ikke kode liggende, men se på adjunkte matriser. Det eneste du gjør er å dele hvert element i matrisen din med determinanten. Lenke til kommentar
Tapped Skrevet 24. mai 2010 Forfatter Del Skrevet 24. mai 2010 (endret) Er det noen som har fungerende kode i C++ for en matrix inverse av en 4x4 homogen matrise? Den koden under ser ikke ut til å gjøre noe som helst med matrisene mine... float Mat4::determinant() const { return m_m14 * m_m23 * m_m32 * m_m41 - m_m13 * m_m24 * m_m32 * m_m41 - m_m14 * m_m22 * m_m33 * m_m41 + m_m12 * m_m24 * m_m33 * m_m41 + m_m13 * m_m22 * m_m34 * m_m41 - m_m12 * m_m23 * m_m34 * m_m41 - m_m14 * m_m23 * m_m31 * m_m42 + m_m13 * m_m24 * m_m31 * m_m42 + m_m14 * m_m21 * m_m33 * m_m42 - m_m11 * m_m24 * m_m33 * m_m42 - m_m13 * m_m21 * m_m34 * m_m42 + m_m11 * m_m23 * m_m34 * m_m42 + m_m14 * m_m22 * m_m31 * m_m43 - m_m12 * m_m24 * m_m31 * m_m43 - m_m14 * m_m21 * m_m32 * m_m43 + m_m11 * m_m24 * m_m32 * m_m43 + m_m12 * m_m21 * m_m34 * m_m43 - m_m11 * m_m22 * m_m34 * m_m43 - m_m13 * m_m22 * m_m31 * m_m44 + m_m12 * m_m23 * m_m31 * m_m44 + m_m13 * m_m21 * m_m32 * m_m44 - m_m11 * m_m23 * m_m32 * m_m44 - m_m12 * m_m21 * m_m33 * m_m44 + m_m11 * m_m22 * m_m33 * m_m44; } Mat4 Mat4::inverse() const { float det = determinant(); if (det == 0) throw std::runtime_error("Attempt to invert degenerate matrix."); return *this * (1 / det); // Returnerer denne matrisen multiplisert med en skalar invers determinant. } Jeg tror jeg ser hva feilen er. Det du returnerer er en over determinanten ganger med selve matrisen, men det du egentlig skal gange med er adjointen til matrisen ikke selve matrisen. Du finner adjointen ved å transponere kofaktorene til matrisen. Formelen for å finne en inverse matrise er M-1 = adjM / |M| Fordi at deling er mer krevende enn ganging, på en datamaskin, så setter man 1 over det man skal dele med. Derfor pleier man å sette 1 over determinanten fordi at ellers så måtte du ha delt svaret 16(4 x 4) ganger for å finne inversen til matrisen. Du kan bruke følgende side for å finne kofaktorene av en 4x4 matrise. http://www.mathisfunforum.com/viewtopic.php?id=10440 Jeg har ingen kode liggende for 4x4 matrise fordi jeg pleier heller å bruke 4x3 matrise. -Tapped Endret 24. mai 2010 av Tapped Lenke til kommentar
LostOblivion Skrevet 24. mai 2010 Del Skrevet 24. mai 2010 Hjertelig takk Tapped. Etter litt godvilje med regex i VS, fikk jeg lagd meg cofactor og adjoint med linken over, og nå funker inverse nydelig. Er overrasket over hvor mye regning som må til for å regne ut disse da, så prøver å bruke det minst mulig...bruker f eks transpose et sted i stedet for inverse for å finne inverse matrisen til en homogen rotasjonsmatrise. Dette er mulig pga rotasjonsmatrisers transpose = inverse for samme. Lenke til kommentar
GeirGrusom Skrevet 26. mai 2010 Del Skrevet 26. mai 2010 Ja, den fikset biffen hos meg og takker! Nå vil kameraet i Glorg kunne settes under andre noder og bli transformert relativt til dem Lenke til kommentar
Inaktivbruker_101125 Skrevet 26. mai 2010 Del Skrevet 26. mai 2010 Tapped: Kan du vise oss noen av dine demoer? Er du med i demoscenen? Kunne gjerne tenke meg å starte med spillprogrammering igjen, men da enten med Direct X eller OpenGL. Høyst sannsynlig OpenGL for multiplatform. De bøkene du linket til tidligere i tråden, er det «nok» grunnkunnskap for å starte med utvikling av demoer? (Det er primærønsket mitt.) Takk. Lenke til kommentar
Tapped Skrevet 27. mai 2010 Forfatter Del Skrevet 27. mai 2010 (endret) De bøkene du linket til tidligere i tråden, er det «nok» grunnkunnskap for å starte med utvikling av demoer? (Det er primærønsket mitt.) Ja, de bøkene er bra, men det viktigste er å prøve selv og lære av feilene sine. Så bøkene skal bare hjelpe deg i å komme igang, du vil aldri lære å bli avansert grafikkprogrammerer med disse bøkene. Den boken jeg har fått mest ut av er "3D Math primer for graphics and game development" . Jeg som er 14 år gammel klarte å komme igjennom matematikken i denne boken. Jeg liker også "Programming Game AI by Example" som lærer deg å bruke matte til å lage avansert AI. "Beginning OpenGL Programming" er en bra bok til å starte med, men du må nok gå innom http://nehe.gamedev.net/ for å lære mer. -Tapped Endret 27. mai 2010 av Tapped Lenke til kommentar
Inaktivbruker_101125 Skrevet 27. mai 2010 Del Skrevet 27. mai 2010 Tusen takk! Skaffer meg de bøkene snart. Du har ikke lyst å dele noen demoer med oss? Lenke til kommentar
GeirGrusom Skrevet 28. mai 2010 Del Skrevet 28. mai 2010 Hmm jeg trodde inverse funka, men en transponert roteringsmatrise fra en quaternion med vilkårlige verdier gir ikke det samme som den inverse, men på enkle roteringsmatriser (RotateX) gjør den det... Er det egentlig riktig? Lenke til kommentar
Tapped Skrevet 28. mai 2010 Forfatter Del Skrevet 28. mai 2010 Tusen takk! Skaffer meg de bøkene snart. Du har ikke lyst å dele noen demoer med oss? Jeg holder på å lage en Spillmotor nå, men jeg kan jo se på hva jeg får tid til. De fleste av demoene mine har vært for å teste meg selv ikke for å vise andre hva jeg kan lage. Så ingen av demoene er "ekte". Lenke til kommentar
NevroMance Skrevet 28. mai 2010 Del Skrevet 28. mai 2010 Hmm jeg trodde inverse funka, men en transponert roteringsmatrise fra en quaternion med vilkårlige verdier gir ikke det samme som den inverse, men på enkle roteringsmatriser (RotateX) gjør den det... Er det egentlig riktig? Sjekk om rotasjonsmatrisen du får fra quaternionen din er ortonormal. Hvis den ikke er det holder det ikke å transponere den. Tror rotasjonsmatrisen skal bli ortonormal hvis du normaliserer quaternionen. Just in case: En ortonormal matrise er en matrise hvor alle kolonnene er ortogonale (dotproduktet mellom de er null), og lengden av hver kolonne er 1. Lenke til kommentar
Tapped Skrevet 29. mai 2010 Forfatter Del Skrevet 29. mai 2010 (endret) Hmm jeg trodde inverse funka, men en transponert roteringsmatrise fra en quaternion med vilkårlige verdier gir ikke det samme som den inverse, men på enkle roteringsmatriser (RotateX) gjør den det... Er det egentlig riktig? Rotasjon og refleksjon matriser skal være ortogonale matriser. En matrise er ortogonal, når matrisen ganger transponeringen av matrisen = Identity matrisen. Matrisen sin transponering = inversen bare når matrisen er ortogonal. Det kan skje at en matrise ikke er ortogonal lenger fordi at du har satt inn feil tall i matrisen eller float-point feil som er kalt matrix-creep. I din situasjon ser det ut som at du har satt inn feil tall i rotasjonsmatrisen din. Det er en måte å få matrisen til å bli ortogonal igjen ved å ortogonalisere matrisen. Dette gjøres ved å først lage tre rad vektorer( bare hvis det er 3x3 matrise). For hver rad vektor subtraherer du av delen av vektoren som er parallell til de andre vektorene, resultatet vil bli en vinkelrett vektor, som du må normalisere for å få en ortonormal. Du må nesten se i en mattebok for å finne formelen fordi jeg orket ikke å skrive det inn her. -Tapped Endret 29. mai 2010 av Tapped Lenke til kommentar
GeirGrusom Skrevet 29. mai 2010 Del Skrevet 29. mai 2010 Matrisen er laget utifra en normalisert quaternion, så det er ingen matrix creep på gang. Jaja, får finne ut av dette senere, er ikke viktig enda. Lenke til kommentar
NevroMance Skrevet 29. mai 2010 Del Skrevet 29. mai 2010 Hvis du ikke finner feilen kan du sende over quaternion klassen med implementasjon til meg, så kan jeg se om jeg finner feilen. Hjelper ofte med ett nytt par øyne som ikke har stirret seg blind på koden. Lenke til kommentar
Senyor de la guerra Skrevet 29. mai 2010 Del Skrevet 29. mai 2010 Ville bare si jeg er imponert over TS Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå