Gå til innhold

Anbefalte innlegg

void drawEllipse(float xradius, float yradius)

{

for (int i=0; i < 360; i++)

{

//convert degrees into radians

float degInRad = i*DEG2RAD;

glVertex2f(cos(degInRad)*xradius,sin(degInRad)*yradius);

}

}

void renderScene(void) {

glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_LINE_LOOP);

glColor3f(1.0, 1.0, 1.0);

drawEllipse(0.1f,0.1f);

glEnd();

glFlush();

}

 

Her er koden min for å lage en ellipse. Det skal simuleres en ball som faller, treffer bakken og presses sammen for så og sprette opp igjen. Men problemet er å få ballen til å bevege seg? Jeg husker hvordan man gjorde slikt i Java, men skjønner ikke helt i c++.

Lenke til kommentar
Videoannonse
Annonse

Kan være at du ikke har noen render loop, da vil bare koden din rase gjennom uten at du merker noe. Så hva med dette

 

#define WINWIDTH 640 //eller noe
bool keypressed = false;

void renderLoop()
{
 int i = 0;
 while(!keypressed) //keypressed må selvfølgelig detekteres en plass
 {
 glLoadIdentity();
 glTranslatef((i++) % WINWIDTH, 0, 0);
 renderScene();
 }
}

Endret av tresko
Lenke til kommentar

Rart at enkelte høgskoler her i landet har byttet ut C++ med java (og til en grad C#).

Personlig synes eg at C++ er det som burde ha vært grunnspråket på høgskolene.

 

Jeg vurderer å slenge meg på ei skole innen spillprogrammering, hvor som helst bare det er en uber skole med C/C++ og ikke java/C#. Er det noen som har anbefalinger å gi?

 

Går selv på en høgskole hvor de har byttet ut C++ med java, og min erfaring er at de datastudentene ikke helt får grepet om programmering (og i stedet blir god med nettbaserte løsninger).

Lenke til kommentar

Ja, er enig med deg der. Jeg ser ikke helt den hvorfor man skal prakke på Java til it-studenter, bortsett fra at studentene slipper bekymre seg for det underliggende. Mange faller også av lasset når man velger fag hvor man må bruke C/C++. Det merkelige synes jeg er at mange fysikk/matematikk studenter ender opp med å kunne mer C++ enn it studenter, iallfall innen numeriske metoder. Er nok mange som aldri kommer til å kode C/C++ etter endt utdanning. For min del er jeg glad at jeg fikk lært Java på universitetet, for det hadde jeg aldri giddet selv. Men kommer ikke til å få bruk for java på jobben iallfall.

 

Anyways,

electric_skateboard_double_comic.png

Endret av tresko
Lenke til kommentar

Føler for å hive meg på og uttrykke min enighet. No har NTNU i det minste gått i riktig retning og byttet ut java-faget TDT4100 (objektorientert programmering) med C++ faget TDT4102 (Prosedyre- og objektorientert programmering). Selv opplevde eg å først lære det meir enkle java-faget i løpet av eit halvt år, for så å måtte lære C (kompilering, pekere og minnehåndtering) i løpet av to uker i eit seinere fag. Skulle så inderlig ønske det var motsatt.

 

Så @MindProse; støtter deg fullt opp.

 

Og for trådens egentlige hensikt og skaper:

glTranslate og glRotate er fundamentale funksjoner i openGl. Eg anbefaler på det sterkeste å ta ein titt på denne nettsiden http://www.videotutorialsrock.com/. Se helst igjennom den tekst-baserte løsningen om du vil pløye fort igjennom det, og om du sitter fast, så kan du få det servert på sølvfat gjennom videoene.

 

Mmm, eg fann notatene mine fra da eg leika med openGl.

glBegin(DRAW_TYPE);
glPushMatrix();		//pushes current view coordinates
glTranslatef(GLfloat x, GLfloat y, GLfloat z); //specify displacement
glRotatef(GLfloat angle, GLfloat u, GLfloat v, GLfloat w); //rotates given angle through vector [u,v,w]
...
create vertices to translate and rotate
...
glPopMatrix();		//resumes previous coordinates
glEnd();

Har du hatt om datastrukturen stack, så fungerer det litt på samme måte, i den forstand at du putter og popper translasjonsmatriser.

glLoadIdentity(); //Reset the drawing perspective

nullstiller forresten rotasjon- og translasjon-matrisen.

 

 

.... hmmm.. no lurer du på kanskje korleis du animerer dette?

vel... eg antar du har eit glutMainLoop()-kall i main-fuknsjonen din? I så fall kan du bruke glutTimerFunc-funksjonen før glutMainLoop.

glutTimerFunc(GLint millisec, myFunction, parameter); //Calls function myFunction after given milliseconds

Som da kaller funksjonen "myFunction" etter millisec millisekunder.

Denne funksjonen kan se slik ut

void myFunction(){
//...
//do some alterations
//...

glutPostRedisplay(); // Tell glut that display has changed and that it should redraw screen with specified glutDisplayFunc-function.

glutTimerFunc(milliseconds, myFunction, parameter); //calls itself, so that it repeats ad.inf.
}

Håper dette gir svarene du er ute etter :thumbs:

Endret av Quijote
Lenke til kommentar
Føler for å hive meg på og uttrykke min enighet. No har NTNU i det minste gått i riktig retning og byttet ut java-faget TDT4100 (objektorientert programmering) med C++ faget TDT4102 (Prosedyre- og objektorientert programmering). Selv opplevde eg å først lære det meir enkle java-faget i løpet av eit halvt år, for så å måtte lære C (kompilering, pekere og minnehåndtering) i løpet av to uker i eit seinere fag. Skulle så inderlig ønske det var motsatt.

 

 

Byttet ut å byttet ut... På datateknikk er 4100 standar faget, men går ann å bytte til 4102 hvis man hvil.

Lenke til kommentar

Det spørs egentlig... begge er jo brukbare språk. Kommer ann på kva du har lyst til å ende opp med å lage og bruke det til. Men siden du er ute etter noe veldig grunnleggende så har det ikkje sååå mykje å si (if, while, else, for, main, switch, klasser, funksjoner, arv, polymorphisme, etc...) er slikt man kan lære og bruke i både C++, C# og java.

 

Du kan altså komme godt ut uansett hva du velger, men diskusjonen her gikk meir ut på kva man får nytte av seinere, og personlig har eg aldri hatt bruk for java siden den gang vi lærte det... men til gjengjeld har vi brukt C og C++ støtt siden.

 

Du kan lese kva andre har skrevet om saken ved å gjøre eit enkelt google-søk, langt klokere enn det eg kan gi deg :)

http://www.computing.dcu.ie/~renaat/projects/cvjava.html

Endret av Quijote
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...