   camera movements and what not
  Is there a way in opengl to have a camera like in directx?For example, position youself at (x1, y1, z1) and direct camera at (x2, y2, z2) with an orientation of (x3, y3, z3)?If opengl doesn't support this point system, is there a way to position yourself and then direct your view with angles?All in c++ of course.Thanks.   
  well, you can use the function "gluLookAt" which is described here:http://pyopengl.sourceforge.net/documentation/manual/gluLookAt.3G.htmlor you can manually rotate and translate the environment and just use "gluPerspective" (look here: http://www.mevis.de/opengl/gluPerspective.html) when you initialize the visual elements at start up.i have seen both ways, but i use gluPerspective because i really never understood gluLookAt and how it works.hope those links help!   ;  Exactly what I was looking for. Thanks a bunch.   ;  Hmm.. well it didn't turn out exactly as I wanted..So the gluLookAt transforms the entire world matrix including lights.  So basically, if I call the gluLookAt function it moves the lights, and my world looks a little crazy.  When I rotate the camera around a cube in the center, the lights follow my camera, something I don't want..Is there a way to keep the lights fixed even with camera movements?  Or do I have to move the lights to offset the movements of the camera?Having all these transformations is kind of confusing, especially when I want to be able to construct an object at the origin and move it around.  When I do so, the lights follow, and the camera thing confuses it even more.I'm using NeHe's framework if that changes anything.Any help would be greatly appreciated.   ;  There's a mistake somewhere in your code. My uneducated guess is that your are setting your lights before setting the camera. Also, check out this FAQ to figure out how these functions are meant to be used and what an OpenGL camera is all about, and this one for help with moving the lights.   ;This might help;  I see the problem.  lightbringer was correct.Anywho, one last question: is there a way like in Direct X to apply a material instead of a texture?Take the Dx code:// the materialZeroMemory(&mtrl, sizeof(D3DMATERIAL9));mtrl.Diffuse.r = mtrl.Ambient.r = 1.0f;mtrl.Diffuse.g = mtrl.Ambient.g = 1.0f;mtrl.Diffuse.b = mtrl.Ambient.b = 1.0f;mtrl.Diffuse.a = mtrl.Ambient.a = 1.0f;ddevice->SetMaterial(&mtrl);Is there a way to do this in opengl?Thanks again.   ;  Sure. Use glMaterial()   ;  I was looking at that function for a bit, but I can't seem to figure out how to use it.Do you pass an array with the RGBA values in it or something?Could you post a snippet of code to help me out?Thanks.   ;  I don't have a snipplet for you unfortunately, because I haven't implemented it yet :D (and if I had one, it would be in java anyway)Having said that, looking at the documentation, it goes like this: for face, 99% of the time you'll want to pass GL_FRONTpname is the type of material you want to change. OpenGL will remember your settings of course, so you set a material, draw a bunch of objects, then set a different material, draw a bunch of objects, etc. the types are GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, for the reflectances, GL_AMBIENT_AND_DIFFUSE (sets both at once, to save you some typing), GL_EMISSION and GL_SHININESS. forget about GL_COLOR_INDEXES since chances are you're not gonna be using color-index modethe last argument is the name of an array holding the numbers. Here's an example straight from the red book:GLfloat no_mat[] = { 0.0, 0.0, 0.0, 1.0 };GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 };GLfloat mat_ambient_color[] = { 0.8, 0.8, 0.2, 1.0 };GLfloat mat_diffuse[] = { 0.1, 0.5, 0.8, 1.0 };GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };GLfloat no_shininess[] = { 0.0 };GLfloat low_shininess[] = { 5.0 };GLfloat high_shininess[] = { 100.0 };GLfloat mat_emission[] = {0.3, 0.2, 0.2, 0.0};glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/* draw sphere in first row, first column * diffuse reflection only; no ambient or specular */glPushMatrix();    glTranslatef (-3.75, 3.0, 0.0);    glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);    glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat);    glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess);    glMaterialfv(GL_FRONT, GL_EMISSION, no_mat);    auxSolidSphere();glPopMatrix();By the way, I recommend you read it. Okay, it's not up to date, but it covers the basics pretty well. Plus, it's free. You can also download it from opengl.org.   