# HG changeset patch # User John Tsiombikas # Date 1326949427 -7200 # Node ID 0aee5df08cfcdb0146edbbdf162a921b3a3c5e12 # Parent 7e982a61852a388d5b4257c56703872bd10792e0 fixed some shit diff -r 7e982a61852a -r 0aee5df08cfc src/main.c --- a/src/main.c Thu Jan 19 06:15:10 2012 +0200 +++ b/src/main.c Thu Jan 19 07:03:47 2012 +0200 @@ -44,6 +44,7 @@ int main(int argc, char **argv) { + float amb[] = {0.01, 0.01, 0.01, 1}; float ldir[] = {-1, 1, 1, 0}; float dx, dy, dz, diag; @@ -55,7 +56,7 @@ } glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | (stereo ? GLUT_STEREO : 0)); - glutCreateWindow("OpenGL Logo"); + glutCreateWindow("OpenGL 3D viewer"); glutDisplayFunc(disp); glutReshapeFunc(reshape); @@ -72,12 +73,15 @@ glewInit(); + glEnable(GL_NORMALIZE); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, ldir); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, amb); + if((load_scene(&scn, scene_fname)) == -1) { fprintf(stderr, "failed to load: %s\n", scene_fname); return 1; diff -r 7e982a61852a -r 0aee5df08cfc src/scene.c --- a/src/scene.c Thu Jan 19 06:15:10 2012 +0200 +++ b/src/scene.c Thu Jan 19 07:03:47 2012 +0200 @@ -26,17 +26,17 @@ const struct aiScene *aiscn; unsigned int proc_flags = aiProcess_JoinIdenticalVertices | aiProcess_PreTransformVertices | aiProcess_Triangulate | - aiProcess_SortByPType; - - if(verbose) { - printf("scene: %s (%d meshes, %d lights)\n", fname, aiscn->mNumMeshes, aiscn->mNumLights); - } + aiProcess_GenNormals | aiProcess_SortByPType; if(!(aiscn = aiImportFile(fname, proc_flags))) { fprintf(stderr, "failed to load: %s\n", fname); return -1; } + if(verbose) { + printf("scene: %s (%d meshes, %d lights)\n", fname, aiscn->mNumMeshes, aiscn->mNumLights); + } + scn->meshes = 0; scn->lights = 0; @@ -252,19 +252,19 @@ struct light *lt = scn->lights; int pass = 0; + glEnable(GL_BLEND); + glDepthFunc(GL_LEQUAL); + while(lt || pass == 0) { struct mesh *m; setup_light(lt); - glEnable(GL_BLEND); - - if(pass > 0) { + if(pass == 0) { + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } else { glBlendFunc(GL_SRC_ALPHA, GL_ONE); glDepthMask(0); - } else { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glDepthMask(1); } m = scn->meshes; @@ -273,7 +273,11 @@ m = m->next; } pass++; + lt = lt->next; } + + glDisable(GL_BLEND); + glDepthMask(1); } static void setup_light(struct light *lt) @@ -305,8 +309,6 @@ glBindTexture(GL_TEXTURE_2D, m->mat.tex); } - /* TODO texture */ - glBindBuffer(GL_ARRAY_BUFFER, m->vert_buf); glVertexPointer(3, GL_FLOAT, 0, 0); glEnableClientState(GL_VERTEX_ARRAY);