Leif.ross Skrevet 13. april 2010 Del Skrevet 13. april 2010 Takker, kom mye lengre nå, men står fast fordi jeg får en melding om at det ikke er en valid win32 application, så jeg tror jeg bare bruker opengl istedenfor Lenke til kommentar
Leif.ross Skrevet 13. april 2010 Del Skrevet 13. april 2010 lurer bare på en liten ting, hva er kommandoen for å finne ut om en tast er trykket feks if(Pilned == 1) {XX=1} else {XX=2}? Lenke til kommentar
NevroMance Skrevet 13. april 2010 Del Skrevet 13. april 2010 Kommer an på hva du bruker for å styre vinduet/tastetrykk. Lenke til kommentar
Tapped Skrevet 13. april 2010 Forfatter Del Skrevet 13. april 2010 lurer bare på en liten ting, hva er kommandoen for å finne ut om en tast er trykket feks if(Pilned == 1) {XX=1} else {XX=2}? For å skjekke om en tast er trykket ned burde du bruke en API til dette. For eksempel Windows har en egen måte for å skjekke om en tast er trykket ned eller sluppet opp. Her er et eksempel på hvordan du kan skjekke taste trykk på Windows LRESULT CALLBACK MainWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { float xVel; int fwKeys; LPARAM keyData; switch (uMsg) { case WM_LBUTTONDOWN: // venstre muse knapp break; case WM_RBUTTONDOWN: // høyre muse knapp break; case WM_MOUSEMOVE: // muse bevegelse break; case WM_KEYUP: //Når knapp slipper opp fwKeys = (int)wParam; keyData = lParam; switch(fwKeys) { case VK_LEFT: xVel += 0.5; break; default: break; } break; case WM_KEYDOWN: //Når knapp blir presset fwKeys = (int)wParam; keyData = lParam; switch(fwKeys) { case VK_ESCAPE: PostQuitMessage(0); break; case VK_LEFT: xVel -= 0.5; break; default: break; } break; default: break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } Lenke til kommentar
bjaanes Skrevet 13. april 2010 Del Skrevet 13. april 2010 Tror jeg har fått til X nå, men det funker ikke under virtualbox (OpenGL Warning: vboxCall failed with VBox status code) Så jeg lurte på om noen med linux installert skikkelig hadde giddet å prøve? Programmet skal startes med mono TestProject.exe. X tutorialen til Tapped hjalp, ettersom den forklarte hva forskjellige ting var, så takker! Hmm, fungerte ikke hos meg i hvert fall. mono TestProject.exe ** (TestProject.exe:14854): WARNING **: The following assembly referenced from /home/bjaanes/Downloads/TestProject Geir/TestProject.exe could not be loaded: Assembly: System.Windows.Forms (assemblyref_index=2) Version: 2.0.0.0 Public Key: b77a5c561934e089 The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/bjaanes/Downloads/TestProject Geir/). ** (TestProject.exe:14854): WARNING **: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. ** (TestProject.exe:14854): WARNING **: Missing method EnableVisualStyles in assembly /home/bjaanes/Downloads/TestProject Geir/TestProject.exe, type System.Windows.Forms.Application Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Aner ikke om det er en feil hos meg eller ikke... Lenke til kommentar
etse Skrevet 13. april 2010 Del Skrevet 13. april 2010 jeg har brukt SFML en del selv, og kan virkelig anbefale dette. Dette er et multimedia/spill API som baserer seg på SDL og er derfor veldig enkelt å implementere både på windows og linux. Det har veldig god støtte for enkel grafikk, og i tillegg muligheter for å bruke openGL om det er ønskelig 1 Lenke til kommentar
Dinosauromann Skrevet 14. april 2010 Del Skrevet 14. april 2010 jeg har brukt SFML en del selv, og kan virkelig anbefale dette. Dette er et multimedia/spill API som baserer seg på SDL og er derfor veldig enkelt å implementere både på windows og linux. Det har veldig god støtte for enkel grafikk, og i tillegg muligheter for å bruke openGL om det er ønskelig Det er vel heller ment som et alternativ til SDL, som har stått litt i stampe de siste årene. Det virker som et bra alternativ, men har ikke prøvd det så mye. Lenke til kommentar
GeirGrusom Skrevet 5. mai 2010 Del Skrevet 5. mai 2010 Jeg jobber med en grafikkmotor i C# som baserer seg på OpenGL for tiden. jeg har derimot kommet borti noe som dere kanskje har en mening eller en god idé angående. Nå har jeg fått til det aller meste grafiske, den kan laste .obj modeller, teksturer av flere typer (png, jpg, bmp, tif, gif og hdr), bruker quaternions, RK4 simulering, og har et hierarkisk scenegraph, ved siden av at alt kan serialiseres enkelt, og den bruker flere tråder. Men nå er jeg kommet borti materialer, som er siste som mangler før motoren faktisk kan brukes til å lage skikkelige spill med. Problemet er hvordan skal jeg få til lys dersom en kan skrive egne shaders? Jeg har bare hatt én tanke som jeg synes er god, og det er å lage noe lignende UnrealED eller Mental Mill for å definere materialer. Ettersom dette fører til at jeg kan ganske enkelt legge til funksjoner for lys og skygge selv, pluss at hvem som helst kan klare å bruke den. Er det noen som har en enklere og/eller bedre idé? Lenke til kommentar
Zolo Skrevet 5. mai 2010 Del Skrevet 5. mai 2010 Jeg jobber med en grafikkmotor i C# som baserer seg på OpenGL for tiden. jeg har derimot kommet borti noe som dere kanskje har en mening eller en god idé angående. Nå har jeg fått til det aller meste grafiske, den kan laste .obj modeller, teksturer av flere typer (png, jpg, bmp, tif, gif og hdr), bruker quaternions, RK4 simulering, og har et hierarkisk scenegraph, ved siden av at alt kan serialiseres enkelt, og den bruker flere tråder. Men nå er jeg kommet borti materialer, som er siste som mangler før motoren faktisk kan brukes til å lage skikkelige spill med. Problemet er hvordan skal jeg få til lys dersom en kan skrive egne shaders? Jeg har bare hatt én tanke som jeg synes er god, og det er å lage noe lignende UnrealED eller Mental Mill for å definere materialer. Ettersom dette fører til at jeg kan ganske enkelt legge til funksjoner for lys og skygge selv, pluss at hvem som helst kan klare å bruke den. Er det noen som har en enklere og/eller bedre idé? Vet ikke hva shadder du skal bruke, men prisippene skal da være de samme. Nvidia cg, lys Lenke til kommentar
GeirGrusom Skrevet 6. mai 2010 Del Skrevet 6. mai 2010 Bah jeg tenkte feil selvsagt. Jeg tror jeg går for deferred shading. Det virker enklest ^^ Lenke til kommentar
Zolo Skrevet 7. mai 2010 Del Skrevet 7. mai 2010 Jeg har bare hatt én tanke som jeg synes er god, og det er å lage noe lignende UnrealED eller Mental Mill for å definere materialer. Ettersom dette fører til at jeg kan ganske enkelt legge til funksjoner for lys og skygge selv, pluss at hvem som helst kan klare å bruke den. Er det noen som har en enklere og/eller bedre idé? Du kan benytte varabler (bool) som styrer rendringern // i rendre metoden. if(light_on) // rendre med lys else // rendre uten Da kan dette styres utenfra. renderdevice->LightOn(true); Tilsvarende for skygger. Det er slik det skal fungere i min motor. Lenke til kommentar
GeirGrusom Skrevet 7. mai 2010 Del Skrevet 7. mai 2010 Jeg har bare hatt én tanke som jeg synes er god, og det er å lage noe lignende UnrealED eller Mental Mill for å definere materialer. Ettersom dette fører til at jeg kan ganske enkelt legge til funksjoner for lys og skygge selv, pluss at hvem som helst kan klare å bruke den. Er det noen som har en enklere og/eller bedre idé? Du kan benytte varabler (bool) som styrer rendringern // i rendre metoden. if(light_on) // rendre med lys else // rendre uten Da kan dette styres utenfra. renderdevice->LightOn(true); Tilsvarende for skygger. Det er slik det skal fungere i min motor. Det er en mulighet. Det jeg tenker jeg gjør, er at hvert objekt blir rendret to ganger: en gang uten noe som helst lys eller skygge, og deretter med utelukkende med lys (med eventuelle normal maps) og stencil shadows. Lys- og skyggerendringen blir lagt i et eget buffer som deretter bare blendes rett over scenen som er rendret uten lys. Det er relativt simpelt, og ikke fryktelig krevende. Dessuten kan en ha så mange lys en vil uten at det går utover kompleksiteten til shaderen, og spillutvikleren trenger ikke tenke på lys og skygger overhode. Ulempen er visst at det krever mye videominne. Demoen jeg så rendret også til et normal map, men jeg ser ikke helt poenget med det. Kanskje for at utvikleren skal kunne skrive egne normal map effekter? Jeg vet ikke helt. Ihvertfall: med denne metoden kan jeg relativt enkelt få til dynamiske skygger, og brukeren kan skrive en shader uten å måtte tenke på lys i det hele tatt. Lenke til kommentar
Zolo Skrevet 7. mai 2010 Del Skrevet 7. mai 2010 Ser ut som du også har til mål og gjøre det lett for en utvikler og bruke motoren Det eneste jeg ser for meg å rendre til et normal-map er jo at en trenger normalen for refleksjoner, lysbrytting gjennom objekter (glass, vann osv). Men trodde dette kunne gjøres med å laste et normal-map med objektet. Men da jeg testet normal map, kalkulerte jeg normal-vektorer fra en tekstur. Kanskje like greit å gjøre dette i en shader? Lenke til kommentar
GeirGrusom Skrevet 7. mai 2010 Del Skrevet 7. mai 2010 Du må nesten ta det fra en tekstur. Det som skjer i deferred, er at hele scenen rendres til en egen frame som danner et normal map, som sikkert skal brukes for å forvrenge shading "teksturen" etter normal map som er rendret (eks dersom du ser en grusvei, så er det ikke ideelt at shadingen er helt flat, som ville blitt resultatet uten) Problemet blir at dette gjør det mer komplisert å skrive shaders, fordi en nesten må skrive en egen shader kun for å danne normal maps... jeg får kalle dette en lighting shader, men jeg tror jeg må tenke så det knaker for å få dette til... Hvordan har du tenkt til å løse lys/skygger i din motor? Lenke til kommentar
Zolo Skrevet 8. mai 2010 Del Skrevet 8. mai 2010 Du må nesten ta det fra en tekstur. Det som skjer i deferred, er at hele scenen rendres til en egen frame som danner et normal map, som sikkert skal brukes for å forvrenge shading "teksturen" etter normal map som er rendret (eks dersom du ser en grusvei, så er det ikke ideelt at shadingen er helt flat, som ville blitt resultatet uten) Problemet blir at dette gjør det mer komplisert å skrive shaders, fordi en nesten må skrive en egen shader kun for å danne normal maps... jeg får kalle dette en lighting shader, men jeg tror jeg må tenke så det knaker for å få dette til... Hvordan har du tenkt til å løse lys/skygger i din motor? Har litt igjen før jeg skal begynne med lys/skygger. Men planen er å rendre scenen fra lyskilden sin posisjon til et textur. Texturen brukes i neste steg til å danne skygger. Dette skal sammen med en lysmodel f.eks det jeg la ut link for tidligere. Mulig dette blir komplisert med bruk av flere lyskilder. Men er fortsatt litt usikker på hvordan det er å bruke flere shaddere på samme model. Er det bare å laste dem inn? Alle som blir lastet er aktive helt til de blir deaktivert? Lenke til kommentar
GeirGrusom Skrevet 8. mai 2010 Del Skrevet 8. mai 2010 Du kan kun ha en aktiv shader av gangen (glUseProgram) Skal du bruke flere må du rendre samme objektet flere ganger (multi pass) Lenke til kommentar
Zolo Skrevet 8. mai 2010 Del Skrevet 8. mai 2010 (endret) Du kan kun ha en aktiv shader av gangen (glUseProgram) Skal du bruke flere må du rendre samme objektet flere ganger (multi pass) Det var nesten for enkelt til å være sant, synd det av og til tar lang tid å finne ut hvor enkelt det kan gjøres.. Endret 8. mai 2010 av Zolo Lenke til kommentar
GeirGrusom Skrevet 15. mai 2010 Del Skrevet 15. mai 2010 (endret) Hømmm jeg har problemer med OpenGL 3.2... glGetUniformLocation returnerer alltid -1 som skal bety at uniformen ikke er definert i programmet. projection_uniform = active_shader.GetUniformType<MatrixUniform, Matrix>("projection_mat"); Som alt i alt kaller glGetUniformLocation(program_handle, "projection_mat") hvor "projection_mat" blir gjort om til en 0 terminert ASCII string. Shaderen blir kompilert og lenket uten feil. Dette er shaderne jeg bruker: <?xml version="1.0" encoding="UTF-8"?> <material> <VertexShader> #version 140 uniform mat4 projection_mat; uniform mat4 modelview_mat; in vec3 in_position; in vec2 in_texcoord; in vec3 in_normal; out vec4 position; void main() { position = vec4(in_position, 1) * modelview_mat * projection_mat; } </VertexShader> <FragmentShader> #version 140 in vec4 position; out vec4 out_frag; void main() { out_frag = vec4(1, 0, 0, 0); } </FragmentShader> </material> edit: glGetAttribLocation fungerer heller ikke :/ Det som er snodig er at kompilering går fint, ingen feilmeldinger på hverken kompilering eller linking... edit2: GL_ACTIVE_UNIFORMS og GL_ACTIVE_ATTRIBUTES er 0... Programmet linker riktig, alt ser fint ut.. JEG FATTER IKKE HVA SOM ER I VEIEN! Men det ser ut til at jeg gjør noe feil i shaderen, ikke i OpenGL kall... Endret 16. mai 2010 av GeirGrusom Lenke til kommentar
GeirGrusom Skrevet 16. mai 2010 Del Skrevet 16. mai 2010 Fant ut av det shaderen ble optimalisert bort. Lenke til kommentar
TheMaister Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 Prøver å lage en simpel videospiller med å bruke ffmpeg sin libavcodec (sitter i Linux, men vil helst ha det multi-platform), men sliter med å vise bilde på skjermen på en god måte. Så langt bruker jeg SDL sin YV12 overlay, sammen med timere for å holde FPSen stødig, og scaling med swscale og det funker sånn tålelig greit, men det tar altfor mye CPU, og selv Core i7-en min må jobbe greit Tenkte på OpenGL, men forstår ikke mye av det. Har forsåvidt skjønt at man kan lage en svær texture av bildet, skalere det slik man vil (i hardware?), og vise det på skjermen. Hvordan gjøres timing med OpenGL? Er det samme greia her at man bruker timere, og flusher til skjermen når det trengs, eller blir dette et callback-design der OpenGL spør etter en ny render når det passer, også gir man callbacken en ferdig dekodet frame? Støtter OpenGL vanlig YV12/YUV420P? 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å