Jump to content
  • Advertisement

ilnar

Member
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

100 Neutral

About ilnar

  • Rank
    Newbie
  1. ilnar

    Where to start

    Opengl Superbible 4th edition . great book. comes with cd full with tutor files. its dissadvantige is that it doesnt covers 3d model importing or texture importing or shadow mapping.nor normal calculation or smooth shading methods. they have their own functions specially for that book and they use them, without explaining what heppens inside. i personally am stuck on shadows right now. cant get tutors at all (( in other words it perfect for start but horrible for thous who already knows something. im kinda new in c++ too... try this: http://www.swiftless.com/tutorials/opengl/gldrivers.html install dll s into windows/ system 32. i keep glut32.dll in same folder as executable file. but if im not wrong you could install it in system32 aswell. copy from zip's include into C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl and lib files from zip into C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Lib here is basic c++ opengl thing: #include <iostream> #include <stdlib.h> #include <GL/gl.h> //here is gl.h you'v just installed #include <GL/glut.h> //here is glut.h you'v just installed using namespace std; int k=0,d=0; float camx=0.0,camy=0.0,camz=-10.0; float camrotx=0.0,camroty=0.0,camrotz=0.0; float camrotdeg = 0.0; void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(camx,camy,camz); //this guy translates the object into any place you like. //here you could just say glTranslatef(10,2,7); or anything you like. //however if you need to controll the translation by keys, you need to set float variables here. and controll //numbers inside variable's . switch statement below does that. if a keyboard key a or s or w was clicked, switch statement //grabs for example camx and adds 0.1 to it. if before clicking it was 2.0 , ufter clickeng 'a' it will be 2.1. translatef // will get new coordinate and translate object onto it. glRotatef(camrotdeg,camrotx,camroty,camrotz); glPushMatrix(); glBegin(GL_QUADS); //your rectangle drawing starts here glVertex3f( -0.5, 0.5,0.0); glColor3f(1.0, 0.0, 255.0); glVertex3f( 0.5, 0.5,0.0); glColor3f(0.0, 255.0, 0.0); glVertex3f( 0.5, -0.5,0.0); glColor3f(120.0, 15.0, 0.0); glVertex3f( -0.5, -0.5,0.0); glColor3f(1.0f, 0.0f, 1.0f); glVertex3f( 0.5f, -0.5f,0.0f); glVertex3f( 0.5f, 0.5f,0.0f); glVertex3f( 0.5f, 0.5f,0.5f); glVertex3f( 0.5f, -0.5f,0.5f); glEnd(); glPopMatrix(); glFlush(); } void SetupRC(void) { glClearColor(0.0f, 0.0f, 0.5f, 1.0f); glEnable(GL_COLOR_MATERIAL); } void camcontroll(unsigned char key, int x,int y) //camcontroll grabs keys that are pressed, then switch statement //checks different cases. { switch (key) { case'a': //in case if key 'a' was clicked, add 0.1 to camx.see glTranslatef above. camx += 0.1; glutPostRedisplay(); //without this, translation will happen but you wont see it on screen. it refreshes the screen break; //its simple switch statement's guy. ufter every "case" ends, add "break". case'd': camx -= 0.1; glutPostRedisplay(); break; case'w': camy -=0.1; glutPostRedisplay(); break; case's': camy +=0.1; glutPostRedisplay(); break; case'q': camz+=0.1; glutPostRedisplay(); break; case'e': camz-=0.1; glutPostRedisplay(); break; case'f': camroty=1.0; camrotdeg-=1.1; glutPostRedisplay(); break; case'h': camroty=1.0; camrotdeg+=1.1; glutPostRedisplay(); break; default : break; } } int main(int argc, char* argv[]) //program starts here { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 600); glutCreateWindow("GLRect"); glutDisplayFunc(RenderScene); SetupRC(); glutKeyboardFunc(camcontroll); //keyboard input starts working here, see function camcontroll. glutMainLoop(); return 0; }
  2. ilnar

    Basic Movement in OpenGL

    #include <iostream> #include <stdlib.h> #include <GL/gl.h> #include <GL/glut.h> using namespace std; int k=0,d=0; float camx=0.0,camy=0.0,camz=-10.0; float camrotx=0.0,camroty=0.0,camrotz=0.0; float camrotdeg = 0.0; void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(camx,camy,camz); //this guy translates the object into any place you like. //here you could just say glTranslatef(10,2,7); or anything you like. //however if you need to controll the translation by keys, you need to set float variables here. and controll //numbers inside variable's . switch statement below does that. if a keyboard key a or s or w was clicked, switch statement //grabs for example camx and adds 0.1 to it. if before clicking it was 2.0 , ufter clickeng 'a' it will be 2.1. translatef // will get new coordinate and translate object onto it. glRotatef(camrotdeg,camrotx,camroty,camrotz); glPushMatrix(); glBegin(GL_QUADS); //your rectangle drawing starts here glVertex3f( -0.5, 0.5,0.0); glColor3f(1.0, 0.0, 255.0); glVertex3f( 0.5, 0.5,0.0); glColor3f(0.0, 255.0, 0.0); glVertex3f( 0.5, -0.5,0.0); glColor3f(120.0, 15.0, 0.0); glVertex3f( -0.5, -0.5,0.0); glColor3f(1.0f, 0.0f, 1.0f); glVertex3f( 0.5f, -0.5f,0.0f); glVertex3f( 0.5f, 0.5f,0.0f); glVertex3f( 0.5f, 0.5f,0.5f); glVertex3f( 0.5f, -0.5f,0.5f); glEnd(); glPopMatrix(); glFlush(); } void SetupRC(void) { glClearColor(0.0f, 0.0f, 0.5f, 1.0f); glEnable(GL_COLOR_MATERIAL); } void camcontroll(unsigned char key, int x,int y) //camcontroll grabs keys that are pressed, then switch statement //checks different cases. { switch (key) { case'a': //in case if key 'a' was clicked, add 0.1 to camx.see glTranslatef above. camx += 0.1; glutPostRedisplay(); //without this, translation will happen but you wont see it on screen. it refreshes the screen break; //its simple switch statement's guy. ufter every "case" ends, add "break". case'd': camx -= 0.1; glutPostRedisplay(); break; case'w': camy -=0.1; glutPostRedisplay(); break; case's': camy +=0.1; glutPostRedisplay(); break; case'q': camz+=0.1; glutPostRedisplay(); break; case'e': camz-=0.1; glutPostRedisplay(); break; case'f': camroty=1.0; camrotdeg-=1.1; glutPostRedisplay(); break; case'h': camroty=1.0; camrotdeg+=1.1; glutPostRedisplay(); break; default : break; } } int main(int argc, char* argv[]) //program starts here { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 600); glutCreateWindow("GLRect"); glutDisplayFunc(RenderScene); SetupRC(); glutKeyboardFunc(camcontroll); //keyboard input starts working here, see function camcontroll. glutMainLoop(); return 0; }
  3. ilnar

    Shadow Matrix Question

    i dont know much about shadows in opengl but maybe it will help: http://www.devmaster.net/articles/shadowprojection/ if it helped please give me a hint how to get a point where vector intersects a plane. i know its something with Ax+By+Cz=D or something but in not sure.
  4. download modelled obj files from internet or download 3ds and convert it to obj (using deep exploration or 3ds max itself). ofcourse if you'r plannig to use obj s as your primary model format. here is my advice. learn how to import obj files into engine, how to read vertex coordinates and keep them into one big data container (structure,array, as you like. i use structures.). then use these coordinates to draw vertices inside your engine and this way model will be imported. its not that easy so. then learn how to open images and texture them onto your objects(3d models). , learn about normals, normalisation, smooth shading, lighting, (well i guess you know most of them already im stuck on smooth shading right now.) grab enough knowledge and then go grab some 3d scene room or terrain they are free . import them as your level. learn about collisions and program gravity so your cars tanks objects interract with walls, ground and stay on them, let them jump, run. running animations are also for free. but animation in 3d engine is another biiig thing so you have to study a lot before you reach animation stuff. i use opengl superbible 4th edition. its only huge disadvantige is that they dont explain anything about importing 3d models into engine. i dont know why they just jumped over it. and they dont explain how to open images into engine. they'v written their own classes and, in short its a big minus for that book. everything other is perfectly explained there.
  5. ilnar

    First Steps

    aa.. i was learning 3d graphycs and finally i'v got enough experience to model for games. you dont need to know how to model, just get 3ds max or any 3d modelling program and make primitive objects spheres boxes and try to import them into your engine. then download modelled obj files from internet or download 3ds and convert it to obj (using deep exploration or 3ds max itself). ofcourse if you'r plannig to use obj s as your primary model format. here is my advice. learn how to import obj files into engine, how to read vertex coordinates and keep them into one big data container (structure,array, as you like. i use structures.). then use these coordinates to draw vertices inside your engine and this way model will be imported. its not that easy so. then learn how to open images and texture them onto your objects. , learn about normals, normalisation, smooth shading, lighting, (well i guess you know most of them already im stuck on smooth shading right now.) grab enough knowledge and then go grab some 3d scene room or terrain they are free . import them as your level. learn about collisions and program gravity so your cars tanks objects interract with walls, ground and stay on them, let them jump, run, and then ofcourse record this in a file and send it to game development companies . that's it i guess... i dream to make a small videogame... who knows maybe my dumb little engine will have some price one day heh.. iv overwritten obj importer 6 times and its still dirty and unfinished. if world will go crazy and they will put license on everything, tell me and ill give you one tank i modeled some time ago.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!